JObject.SelectToken解析路径索引器报Unexpected character错误求助
问题原因
你使用的Newtonsoft.Json组件中,SelectToken方法对JSON路径语法有明确规则:
- 方括号
[]如果用于包裹字符串类型的JSON键名,必须为键名添加单引号,否则会被默认识别为数组的数字索引 - 你写的路径
[response][0][assignment][current][channelId]中,第一个[response]没有加单引号,解析路径时碰到首字符r不符合数字格式,直接抛出报错。
修复方案
有两种等价的正确写法可选:
写法1:点语法(更简洁,适合键名无特殊字符的场景)
JObject oR = JObject.Parse(response2.Content); var channelIdToken = oR.SelectToken("response[0].assignment.current.channelId"); if (channelIdToken != null) { ChannelId = channelIdToken.ToString(); }
写法2:带单引号的方括号语法(适合键名含特殊字符的场景)
JObject oR = JObject.Parse(response2.Content); var channelIdToken = oR.SelectToken("['response'][0]['assignment']['current']['channelId']"); if (channelIdToken != null) { ChannelId = channelIdToken.ToString(); }
优化说明:调整为单次调用
SelectToken再复用结果,避免重复解析路径带来的不必要性能开销。
内容的提问来源于stack exchange,提问作者Brent Allison
相关产品推荐
相关产品推荐

