我有以下 JSON,我需要使用JSONPathname
获取纯值:
{
"single" : {
"id" : 1,
"name" : "Item name"
}
}
我使用的表达式是,$.single.name
但我总是得到一个数组:
[ "Item name" ]
而不是字符串值 ( "Item name"
)。
但我总是得到一个数组:
这是注定要发生的。正如您在本文档中所读到的,在“结果”下(几乎在底部):
请注意,jsonPath 的返回值是一个数组,也是一个有效的 JSON 结构。因此,您可能希望再次将 jsonPath 应用于生成的结构,或者使用您最喜欢的数组方法之一对其进行排序。
所以基本上它总是会返回一个数组。如果您需要将数据作为其他类型,例如在这种情况下为字符串,恐怕您必须自己进行转换。
我正在使用 JSONPath 的Java 实现并遇到了同样的问题。对我有用的是将 '[0]' 添加到 json 路径字符串。所以在你的情况下:
$.single.name[0]
我认为,这取决于语言实现。
例如在 nodejs 中有一个 npm 模块:https ://www.npmjs.com/package/jsonpath
其中有一个名为value的方法,它正是我们需要的
jp.value(obj, pathExpression[, newValue])
返回匹配 pathExpression 的第一个元素的值。如果提供了 newValue,则设置第一个匹配元素的值并返回新值。
我试过了,成功了!