我正试图在下面的Json对象中读取子元素。下面是Json示例。我想在testdata1, testdata2 and testdata3.
RecommendedCount
和TotalReviewCount
{
"HasErrors": false,
"Includes": {
"test ": {
"testdata1": {
"ReviewStatistics": {
"RecommendedCount": 0,
"TotalReviewCount": 2
}
},
"testdata2": {
"ReviewStatistics": {
"RecommendedCount": 0,
"TotalReviewCount": 2
}
},
"testdata3": {
"ReviewStatistics": {
"RecommendedCount": 0,
"TotalReviewCount": 2
}
}
}
}
}
我试过下面的代码。
RecommendedCount = apiResponse.Includes.Products[key].ReviewStatistics.RecommendedCount,
TotalReviewCount = apiResponse.Includes.Products[key].ReviewStatistics.TotalReviewCount
但是这是非常慢的,因为Json响应有超过1000行,所以它需要时间。我想知道我是否可以使用任何链接来查找相关数据或其他方法?
提前感谢。
var jObj = (JObject)JsonConvert.DeserializeObject(rawJson);
foreach (var child in jObj["test"].Children())
{
}
以上是我试图使用的反序列化代码,但得到Object reference not set to an instance of an object
。误差
我的解决方案:
JObject obj = JObject.Parse(jsonString);
var recList= obj.SelectTokens("$..ReviewStatistics.RecommendedCount").ToList();
var totalList= obj.SelectTokens("$..ReviewStatistics.TotalReviewCount").ToList();
然后你可以得到你想要的数据。例如,如果您想要从testdata2中获取推荐计数,您可以这样做
var dataYouWant = (int)recList[1];
引用:
- http://www.newtonsoft.com/json/help/html/LINQtoJSON.htm
- 使用Newtonsoft(或LINQ到JSON)将JSON反序列化到。net对象
- https://msdn.microsoft.com/en-us/library/cc197957 (v = vs.95) . aspx
如果有任何错误,请随时纠正我的答案。谢谢!
我怀疑问题是在您的Json
中,您在"test "
字段中有一个空间,这会导致空引用异常。
我不完全确定是复制粘贴错误还是以这种格式获得Json
字符串。
检查working code
是否删除空格