使用JSONPath从JSON对象获取单个值

Ili*_*ija 19 json jsonpath

我有以下JSON,我需要name使用JSONPath获取普通值:

{
  "single" : {
    "id" : 1, 
    "name" : "Item name"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

[ "Item name" ]
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*Tim 15

但我总是得到一个数组:

这意味着要发生.正如您在本文档中所读到的,在"结果"下(几乎在底部):

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

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

  • 是的,我得出了这个结论。我问的原因是看看我是否缺少一些 JSONPath 语法,它可以让我获得结果数组的第一个元素,而不是整个数组。 (2认同)

pep*_*pan 7

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

$.single.name[0]

  • 我遇到了类似的问题,但表达方式.我想从数组单个对象和从该对象获得单个值,但这不起作用:`data [?(@.id == 9617)] [0] .is_favorite`这不起作用`data [?(@. ID == 9617)].[0] .is_favorite` (3认同)