我正在尝试在下面的Json对象中读取子元素。以下是Json示例。我想在RecommendedCount
TotalReviewCount
和testdata1, testdata2 and testdata3.
{
"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行所以需要时间。我想知道有没有linq我可以用来查找相关数据或我可以使用的任何其他方法?
提前致谢。
var jObj = (JObject)JsonConvert.DeserializeObject(rawJson);
foreach (var child in jObj["test"].Children())
{
}
以上是我尝试使用的反序列化代码,但获取Object reference not set to an instance of an object
。错误
答案 0 :(得分:3)
我的解决方案:
JObject obj = JObject.Parse(jsonString);
var recList= obj.SelectTokens("$..ReviewStatistics.RecommendedCount").ToList();
var totalList= obj.SelectTokens("$..ReviewStatistics.TotalReviewCount").ToList();
然后您就可以获得所需的数据。例如,如果您想要testdata2中的RecommendedCount,那么您确实喜欢这个
var dataYouWant = (int)recList[1];
参考文献:
如果有任何错误,请随时更正我的回答。谢谢!
答案 1 :(得分:2)