使用JObject解析嵌套数组JSON失败的问题排查
问题原因
- 变量声明的类型与JSON实际结构不匹配:JSON中的
xyz和xy都是二维数组结构,你的代码里分别声明为List<float>和List<int>一维集合,类型不对应 - 方法使用错误:
JToken.Value<T>仅适用于提取单个基础类型值(比如数字、字符串、布尔值),转换集合类型需要调用ToObject<T>方法
修复后的代码
// 确保已引入Newtonsoft.Json.Linq命名空间 JObject resultantData = JObject.Parse(inputString); List<List<float>> xyz = resultantData["data"]["xyz"].ToObject<List<List<float>>>(); List<List<int>> xy = resultantData["data"]["xy"].ToObject<List<List<int>>>();
可选优化方案(强类型反序列化,更易维护)
先定义和JSON结构完全匹配的实体类:
public class Root { public int status { get; set; } public Data data { get; set; } } public class Data { public List<List<float>> xyz { get; set; } public List<List<int>> xy { get; set; } }
直接全量反序列化即可:
Root result = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(inputString); var xyz = result.data.xyz; var xy = result.data.xy;
内容的提问来源于stack exchange,提问作者Paul Andy
相关产品推荐
相关产品推荐

