我有这个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),所以它可以以相对一致的方式解析.
尽管名称看起来相似,但细微的更改可能会很棘手。不幸的是,我找不到有关 JPath 的体面信息。
JSON.NET 的文档正在谈论 JPath 和 JSONPath,我认为它们是相同的。我对么?
包含 JPath 表达式的字符串。
来自JToken.SelectToken(另见源代码)
此示例加载 JSON,然后使用 SelectToken(String) 和 JSONPath 查询从中查询值。
哪个正在使用JObject.SelectToken
(继承自JToken
)
我有一个很大的嵌套 JSON。我不知道 JSON 的结构。我只有 JSON 中存在的一组键,但我不知道 JSON 中的具体位置。假设密钥存在于其中的某个位置,如何从未知的 JSON 结构中找出密钥的路径?