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

C#使用JObject.Parse解析JSON报错如何提取customerName字段值

错误产生原因

这个报错的核心原因是JSON嵌套转义错误:
你定义的JSON中,billDetails、billerResponse、additionalInfo三个字段的值本身是序列化后的JSON字符串,这类嵌套在JSON里的字符串类型JSON,内部的双引号需要做转义处理。但你在C#中定义字符串时,只做了C#层面的双引号转义,没有处理JSON层面的嵌套转义,导致最终传给JObject.Parse的原始JSON文本中,billDetails的字符串值在碰到内部的"时就被解析器判定为提前结束,后续的n(name字段的首字母)就成了非法意外字符,触发报错。

解决方法

步骤1:修正JSON字符串转义

如果是硬编码的测试字符串,推荐使用C#逐字字符串(前缀加@)降低转义复杂度,内部双引号用两个双引号转义,嵌套JSON中的双引号额外加反斜杠转义,修正后的字符串定义如下:

string aaaa = @"
{
    ""respCode"":""1"",
    ""status"":""SUCCESS"",
    ""response"":{
        ""chId"":1,
        ""refId"":""YBL4ABC0D3D61A349F18605928DD63E8886"",
        ""approvalRefNum"":""264992511"",
        ""responseCode"":""000"",
        ""responseReason"":""Successful"",
        ""complianceReason"":"""",
        ""complianceRespCd"":"""",
        ""billDetails"":""[{\""name\"":\""Consumer Number\"",\""value\"":\""900001073788\""}]"",
        ""billerResponse"":""{\""customerName\"":\""MNTALI\"",\""amount\"":\""421\"",\""dueDate\"":\""2021-11-06\"",\""custConvFee\"":\""\"",\""custConvDesc\"":\""\"",\""billDate\"":\""2021-10-16\"",\""billNumber\"":\""9337718556142\"",\""billPeriod\"":\""MONTHLY\"",\""billTags\"":[{\""name\"":\""Early Payment Amount\"",\""value\"":\""41200\""}]}"",
        ""additionalInfo"":""[{\""name\"":\""Early Payment Date\"",\""value\"":\""2021-10-23\""},{\""name\"":\""URL\"",\""value\"":\""https://cp.tatapower.com:4443/inv?inv_nou003dMDkzMzc3MTg2MTQy\""}]""
    }
}";

如果该字符串是从外部接口、存储介质获取的,说明数据源返回的JSON本身不符合规范,需要要求提供方修正嵌套JSON的转义逻辑。

步骤2:分层解析提取字段

因为customerName存放在嵌套的billerResponse字符串中,需要先解析外层JSON,再二次解析billerResponse的内容,代码如下:

// 解析外层JSON
var userObj1 = JObject.Parse(aaaa);
// 提取billerResponse字段的字符串值,二次解析为JSON对象
var billerResponse = JObject.Parse(userObj1["response"]["billerResponse"].ToString());
// 获取customerName的值
string customerName = billerResponse["customerName"].ToString();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:15:03