问题标签 [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.
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 的通用对象),所以它可以以相对一致的方式进行解析。
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 - 是否有与 JSON 等效的模式的 XPath?
是否有一个库提供了一种查询 JSON 的方法,它类似于带有模式的 XPath?
我说使用 Schema 是因为我们想要对过滤(日期不等式)和返回值进行类型化查询。
我们需要在 Java 上使用它,并且希望在 .NET 上使用它。
是的,我发现了几个 JPath 实现,但没有一个使用模式。有几个 JSON 模式验证器(这似乎是使用最广泛的)。但它与任何 JPath 实现无关。
我正在寻找的是两者的结合。因此,在查询中,我得到了正确输入的结果。这也允许将日期作为日期处理,然后您可以对它们进行不等式处理。
更新 - 请重新打开:这被标记为重复,但链接到“重复”是一个不使用模式的解决方案。由于上面列举的原因,我们需要一个模式。
c# - Json.net 是否支持使用 SelectTokens() 进行更复杂的通配符搜索?
我知道我可以像这样进行通配符搜索:
我在运行时构建搜索路径,它不是硬编码的。在某些情况下,我需要搜索一些更复杂的东西,比如“q*”,这样会导致搜索路径为:
Json.net 似乎不支持这一点,所以在这种情况下,我将搜索字符串更改为“items.*.name”,然后使用带有正则表达式的 Where 子句过滤到与通配符匹配的那些,所以,正则表达式可能是:
当然,这是一个简单的例子,但路径上可能有多个 *,也可能是“.*v2.”等。
如果有某种方法可以在 json.net 中本地执行此操作(或执行正则表达式的更好方法),我可以摆脱正则表达式匹配,因为这是分析器所说的费用所在。
json - 我需要使用不确定路径从 json 路径获取原始数据类型
鉴于此文件:
以下代码返回[54]
:
但我需要一个原始类型,仍然保持不定路径。
json.net - JPath 与 JSON.NET 中的 JSONPath 相同吗?
尽管名称看起来相似,但小的更改可能会很棘手。不幸的是,我找不到关于 JPath 的像样的信息。
JSON.NET 的文档正在谈论 JPath 和 JSONPath,我认为它们是相同的。我对么?
一个包含 JPath 表达式的字符串。
来自JToken.SelectToken(另请参见源代码)
此示例加载 JSON,然后使用 SelectToken(String) 和 JSONPath 查询从中查询值。
哪个正在使用JObject.SelectToken
(继承自JToken
)
java - 在 JsonArray 中为 JSON PATH 获取一个数组
我的 JsonBody 是
我正在尝试将属性acr_values获取为数组,因为我期望 Json 数组中包含 Array[ ["AAL1","AAL2"] ]
并希望使用此代码段对其进行验证。
但是值作为 JsonArray ["AAL1", "AAL2"]返回,我试图将值作为数组获取。因为当我试图获取值时
我和 Json Array 一样["value1" , "value1"]
,我如何区分 valueForAcr 和 ValueForAttribute。有什么方法可以让我将 valueForAcr 设为 [ ["AA1","AA2"] ]
c# - 使用 Json.Net 从嵌套 JSON 中获取键的路径
我有一个很大的嵌套 JSON。我不知道 JSON 的结构。我只有一组存在于 JSON 中的键,但我不知道 JSON 中的确切位置。假设密钥存在于其中某处,我如何从未知的 JSON 结构中找出密钥的路径?
c# - 如何在 C# 中读取 json 时以编程方式转义特殊字符?
在 json 消息中,我有一个字段Name
可以有不同特殊字符的各种组合。由于特殊字符,当我过滤此属性时出现错误:
解析路径查询时出现意外字符:!
该属性的值不是固定的。由于事先不知道特殊字符的组合,因此在应用 jpath 过滤属性时,我无法应用特定的转义序列。
例如:如果'Name': ''!!!',
那么$..[?(@Name== '\'!!!')]
将解决问题。但是,相同的字段也可以具有类似的值'Name': 'A!!!'
。在这种情况下,相同的转义序列将失败。
其他可能的组合Name
是 'Name': '!"!!'
, 'Name': ''"!!'
, 'Name': '$"!!'
等'Name': '/"!!'
'Name': ',!!!'
。是否有一种通用的方法可以以编程方式转义特殊字符,以便我可以处理所有组合?