38

我有以下 JSON,我需要使用JSONPathname获取纯值:

{
  "single" : {
    "id" : 1, 
    "name" : "Item name"
  }
}

我使用的表达式是,$.single.name但我总是得到一个数组:

[ "Item name" ]

而不是字符串值 ( "Item name")。

4

4 回答 4

34

但我总是得到一个数组:

这是注定要发生的。正如您在本文档中所读到的,在“结果”下(几乎在底部):

请注意,jsonPath 的返回值是一个数组,也是一个有效的 JSON 结构。因此,您可能希望再次将 jsonPath 应用于生成的结构,或者使用您最喜欢的数组方法之一对其进行排序。

所以基本上它总是会返回一个数组。如果您需要将数据作为其他类型,例如在这种情况下为字符串,恐怕您必须自己进行转换。

于 2014-05-13T06:30:25.633 回答
10

我正在使用 JSONPath 的Java 实现并遇到了同样的问题。对我有用的是将 '[0]' 添加到 json 路径字符串。所以在你的情况下:

$.single.name[0]

于 2015-01-30T12:20:57.163 回答
2

我认为,这取决于语言实现。

例如在 nodejs 中有一个 npm 模块:https ://www.npmjs.com/package/jsonpath

其中有一个名为value的方法,它正是我们需要的

jp.value(obj, pathExpression[, newValue])

返回匹配 pathExpression 的第一个元素的值。如果提供了 newValue,则设置第一个匹配元素的值并返回新值。

我试过了,成功了!

于 2019-08-21T21:56:43.840 回答
1

如果您收到此错误

“无法获得表达式 $.yourfield 的标量值”

您只需通过将返回类型属性值更改为“json”而不是“自动检测”来配置EvaluateJsonPath处理器

在此处输入图像描述

于 2021-05-18T11:46:27.293 回答