C#用Newtonsoft.Json提取JSON数据报JProperty访问错误如何解决?
错误原因
- 代码中
obj["return"]拿到的JToken实际类型为JObject,对应JSON里的对象结构,并非可遍历的数组结构 - 直接对JObject执行foreach遍历,得到的每个
item是JProperty类型(即JSON对象的键值对单元),该类型不支持通过["key"]的方式访问下级节点,因此触发System.InvalidOperationException报错。
修复方案
根据业务场景可选择以下两种方案:
方案1:return下为固定字段,无需遍历
直接通过JObject索引器取值即可,无需循环,示例代码:
JObject obj = JObject.Parse(jsonString); JObject returnObj = obj["return"] as JObject; string output1_param = returnObj["output01"].ToString(); string output2_param = returnObj["output02"].ToString();
方案2:业务要求return为可遍历的对象集合
需调整JSON结构,将return对应内容改为数组格式,示例:
{ "return": [ { "output01": "Test request success!!", "output02": "test request" } ] }
调整JSON结构后,原有遍历代码可正常运行。
内容的提问来源于stack exchange,提问作者singisu
相关产品推荐
相关产品推荐

