JSON.NET JObject - 如何从这个嵌套的JSON结构中获取值

时间:2016-11-10 22:17:19

标签: c# json json.net jsonpath jpath

我有这个JSON:

{
    "client_id": "26075235",
    "client_version": "1.0.0",
    "event": "app.uninstall",
    "timestamp": 1478741247,
    "data": {
        "user_id": "62581379",
        "site_id": "837771289247593785",
        "platform_app_id": "26075235"
    }
}

我将它解析为JSON.NET JObject,我可以使用例如成功访问第一级值。 (字符串)RequestBody.SelectToken( “CLIENT_ID”)

如何使用JPath表达式(或通过访问JSON.NET JObject的子对象)访问“user_id”的值?这不起作用:

(string)RequestBody.SelectToken("data[0].user_id")

我不能这样做来解析JSON的'data'部分:

JObject RequestBodyData =    JObject.Parse((string)RequestBody.SelectToken("data"));

因为编译器似乎将RequestBody.SelectToken(“data”)识别为对象(我得到错误'无法将对象解析为字符串')

并且我不想将原始JSON解析为自定义C#对象,因为我正在开发一个解决方案,需要能够将JSON一般地解析为JObject(或用于处理JSON的任何其他类型的通用对象) ,因此可以以相对一致的方式进行解析。

1 个答案:

答案 0 :(得分:5)

SelectToken("data[0].user_id")无法正常工作,因为您的JSON中没有数组。您应该使用SelectToken("data.user_id")代替。

小提琴:https://dotnetfiddle.net/K0X4ht