2016-07-04 106 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刪除的空間。