You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Newtonsoft.Json解析DateTimeOffset值失败的原因及JSON格式排查

问题分析与解决

JSON格式的核心问题

你传入的JSON存在嵌套JSON字符串未正确转义的问题:

{"body":"{  "transactionDate": "2022-02-12T01:22:33+00:00" }"}

这里body的值是一个JSON字符串,但内部的双引号没有用反斜杠转义,导致JSON解析器无法正确识别字段边界。正确的格式应该是:

{"body":"{  \"transactionDate\": \"2022-02-12T01:22:33+00:00\" }"}

序列化错误的原因

你的API方法PostConsumeWalletAsync接收的参数是ConsumeWalletRequest类型,但传入的JSON中body字段的值是字符串形式的JSON,而非直接的对象结构。Newtonsoft.JSON尝试将这个字符串直接反序列化为ConsumeWalletRequest对象时,自然会失败——因为字符串无法匹配ConsumeWalletRequest的对象结构(它需要的是包含transactionDate字段的对象,而非一个字符串)。

修复方案

方案1:修正传入的JSON结构

直接传递对象而非嵌套的JSON字符串,去掉外层body的字符串包裹,让JSON结构与ConsumeWalletRequest模型匹配:

{"transactionDate": "2022-02-12T01:22:33+00:00"}

方案2:调整接收模型(若必须保留外层结构)

如果API要求必须用body字段包裹,可以定义一个外层模型来接收:

public class OuterRequest
{
    [Newtonsoft.Json.JsonProperty("body")]
    public ConsumeWalletRequest Body { get; set; }
}

同时修改API方法的参数为OuterRequest,这样Newtonsoft.JSON就能正确解析外层body字段,并将内部对象反序列化为ConsumeWalletRequest。

内容的提问来源于stack exchange,提问作者Zahra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:15:03