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

Chr*_*row 10 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"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

(string)RequestBody.SelectToken("data[0].user_id")
Run Code Online (Sandbox Code Playgroud)

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

JObject RequestBodyData =    JObject.Parse((string)RequestBody.SelectToken("data"));
Run Code Online (Sandbox Code Playgroud)

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

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

Bri*_*ers 10

SelectToken("data[0].user_id")不起作用,因为您的JSON中没有数组.你应该使用SelectToken("data.user_id").

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