【问题标题】:c# Json reading child objectc# Json读取子对象
【发布时间】:2016-07-04 02:59:30
【问题描述】:

我正在尝试读取下面 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 多行,所以需要时间。我想知道我可以使用任何 linq 来查找相关数据或我可以使用的任何其他方法吗?

提前致谢。

 var jObj = (JObject)JsonConvert.DeserializeObject(rawJson);
                foreach (var child in jObj["test"].Children())
                {

                }

以上是我尝试使用但得到Object reference not set to an instance of an object 的反序列化代码。错误

【问题讨论】:

  • 你能告诉我们用于反序列化的代码吗?

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


【解决方案1】:

我的解决方案:

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

参考资料:

如果有任何错误,请随时纠正我的答案。谢谢!

【讨论】:

  • 感谢您的回答。如果我只想获取 testdata2 RecommendedCount 和 TotalReviewCount 呢?
【解决方案2】:

我怀疑问题出在您的 Json 中,您在字段 "test " 中有一个空格,这会导致 null 引用异常

我不完全确定是复制粘贴错误还是您得到这种格式的Json 字符串。

在删除空间时检查此working code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 2013-03-06
    相关资源
    最近更新 更多