c# Json读取子对象



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

中读取RecommendedCountTotalReviewCount
{
    "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是否删除空格

相关内容

  • 没有找到相关文章

最新更新