2016-07-04 108 views
-1

我想读取下面的Json对象中的子元素。以下是Json示例。我想在testdata1, testdata2 and testdata3.c#Json读取子对象

{ 
    "HasErrors": false, 
    "Includes": { 
     "test ": { 
      "testdata1": { 
       "ReviewStatistics": { 
        "RecommendedCount": 0, 
        "TotalReviewCount": 2 
       } 
      }, 
      "testdata2": { 
       "ReviewStatistics": { 
        "RecommendedCount": 0, 
        "TotalReviewCount": 2 
       } 
      }, 
      "testdata3": { 
       "ReviewStatistics": { 
        "RecommendedCount": 0, 
        "TotalReviewCount": 2 
       } 
      } 
     } 
    } 
} 

阅读RecommendedCountTotalReviewCount我尝试下面的代码。

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]; 

参考文献:

如果有什么不妥,请随时纠正我的答案。谢谢!

+0

感谢您的答案。如果我只是想获得testdata2的RecommendedCount和TotalReviewCount,那么呢? –

2

我怀疑问题出在你的Json你必须在场上"test "的空间,这是造成一空引用异常

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

检查此working code删除的空间。