c #Json读儿童对象

时间:2016-07-04 02:59:30

标签: c# json linq c#-4.0 json.net

我正在尝试在下面的Json对象中读取子元素。以下是Json示例。我想在RecommendedCount

中阅读TotalReviewCounttestdata1, 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。错误

2 个答案:

答案 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)

我怀疑问题出在Json您在字段"test "中有空格,导致 空引用异常 。< / p>

我不完全确定是否会以此格式复制粘贴错误或获取Json字符串。

在删除空格时检查此working code