25

我有这个 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,并且可以使用例如成功访问第一级值(string)RequestBody.SelectToken("client_id")

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

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

我不能这样做来解析 JSON 的“数据”部分:

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

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

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

4

1 回答 1

30

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

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

于 2016-11-10T22:41:45.560 回答