问题标签 [jpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
26852 浏览

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

我有这个 JSON:

我将其解析为 JSON.NET JObject,并且可以使用例如成功访问第一级值(string)RequestBody.SelectToken("client_id")

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

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

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

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

0 投票
1 回答
959 浏览

c# - 带有 JsonTextReader 的 JsonPath:一次标记

使用 JsonTextReader 一次加载令牌 (.Load) 与使用 ReadFrom 加载整个 JSON 时,JsonPath 的工作方式不同。下面是一个例子: JSON: Path="[*].person" Method=SelectTokens(path)

使用 .ReadFrom 时,它将返回正确的 2 个元素。如果我使用 .Load ,它将返回 0 个元素。但是,如果我将路径更改为“”,.ReadFrom 返回 0 个元素,而 .Load 返回 2 个元素。

作为修复,我可以更改路径,以便将其删除到第一个“。” 即path = substring(path.index(".")+1); 但是,这感觉更像是一种黑客攻击,而不是适当的修复。当然,我还需要确保 JSON 是一个数组,但在我的大多数情况下,它会是一个数组。

所以最后,我正在尝试学习如何在一次加载令牌时将 JSON 路径与数组一起使用。有什么建议吗?

完整代码

完整的 JSON

0 投票
0 回答
66 浏览

json - 是否有与 JSON 等效的模式的 XPath?

是否有一个库提供了一种查询 JSON 的方法,它类似于带有模式的 XPath?

我说使用 Schema 是因为我们想要对过滤(日期不等式)和返回值进行类型化查询。

我们需要在 Java 上使用它,并且希望在 .NET 上使用它。

是的,我发现了几个 JPath 实现,但没有一个使用模式。有几个 JSON 模式验证器(这似乎是使用最广泛的)。但它与任何 JPath 实现无关。

我正在寻找的是两者的结合。因此,在查询中,我得到了正确输入的结果。这也允许将日期作为日期处理,然后您可以对它们进行不等式处理。

更新 - 请重新打开:这被标记为重复,但链接到“重复”是一个不使用模式的解决方案。由于上面列举的原因,我们需要一个模式。

0 投票
0 回答
2445 浏览

java - 将数组转换为字符串的 Json 路径表达式

我试图找到一种将 json 数组转换为 json 字符串的方法。

http://jsonpath.com/

JSON

输出 iphone

我试过的表达方式,

提前致谢

0 投票
0 回答
1165 浏览

c# - Json.net 是否支持使用 SelectTokens() 进行更复杂的通配符搜索?

我知道我可以像这样进行通配符搜索:

我在运行时构建搜索路径,它不是硬编码的。在某些情况下,我需要搜索一些更复杂的东西,比如“q*”,这样会导致搜索路径为:

Json.net 似乎不支持这一点,所以在这种情况下,我将搜索字符串更改为“items.*.name”,然后使用带有正则表达式的 Where 子句过滤到与通配符匹配的那些,所以,正则表达式可能是:

当然,这是一个简单的例子,但路径上可能有多个 *,也可能是“.*v2.”等。

如果有某种方法可以在 json.net 中本地执行此操作(或执行正则表达式的更好方法),我可以摆脱正则表达式匹配,因为这是分析器所说的费用所在。

0 投票
1 回答
892 浏览

json - 我需要使用不确定路径从 json 路径获取原始数据类型

鉴于此文件:

以下代码返回[54]

但我需要一个原始类型,仍然保持不定路径。

0 投票
1 回答
5203 浏览

json.net - JPath 与 JSON.NET 中的 JSONPath 相同吗?

尽管名称看起来相似,但小的更改可能会很棘手。不幸的是,我找不到关于 JPath 的像样的信息。

JSON.NET 的文档正在谈论 JPath 和 JSONPath,我认为它们是相同的。我对么?

一个包含 JPath 表达式的字符串。

来自JToken.SelectToken(另请参见源代码

此示例加载 JSON,然后使用 SelectToken(String) 和 JSONPath 查询从中查询值。

哪个正在使用JObject.SelectToken(继承自JToken

使用 JSONPath 查询 JSON

0 投票
0 回答
657 浏览

java - 在 JsonArray 中为 JSON PATH 获取一个数组

我的 JsonBody 是

我正在尝试将属性acr_values获取为数组,因为我期望 Json 数组中包含 Array[ ["AAL1","AAL2"] ]并希望使用此代码段对其进行验证。

但是值作为 JsonArray ["AAL1", "AAL2"]返回,我试图将值作为数组获取。因为当我试图获取值时

我和 Json Array 一样["value1" , "value1"],我如何区分 valueForAcr 和 ValueForAttribute。有什么方法可以让我将 valueForAcr 设为 [ ["AA1","AA2"] ]

0 投票
4 回答
1981 浏览

c# - 使用 Json.Net 从嵌套 JSON 中获取键的路径

我有一个很大的嵌套 JSON。我不知道 JSON 的结构。我只有一组存在于 JSON 中的键,但我不知道 JSON 中的确切位置。假设密钥存在于其中某处,我如何从未知的 JSON 结构中找出密钥的路径?

0 投票
2 回答
1048 浏览

c# - 如何在 C# 中读取 json 时以编程方式转义特殊字符?

在 json 消息中,我有一个字段Name可以有不同特殊字符的各种组合。由于特殊字符,当我过滤此属性时出现错误:

解析路径查询时出现意外字符:!

该属性的值不是固定的。由于事先不知道特殊字符的组合,因此在应用 jpath 过滤属性时,我无法应用特定的转义序列。

例如:如果'Name': ''!!!',那么$..[?(@Name== '\'!!!')]将解决问题。但是,相同的字段也可以具有类似的值'Name': 'A!!!'。在这种情况下,相同的转义序列将失败。

其他可能的组合Name'Name': '!"!!', 'Name': ''"!!', 'Name': '$"!!''Name': '/"!!' 'Name': ',!!!'。是否有一种通用的方法可以以编程方式转义特殊字符,以便我可以处理所有组合?