因此,我一直使用jayway JSONPath来查询JSON对象,如下所示:

{
  "messageHeader" : {

     "sentBy" : "someOne",
     "userName" : "John Doe"
  },

 "payload" : []
}


而且这在大多数情况下都可以正常工作,除了现在我希望使用路径$ .. *选择根级别对象,并根据消息中存在的对象类型使用它们的键/名称作为标识符来执行单独的任务。
但是,使用上述路径或$。*始终会生成一个类似于以下内容的JSONArray:

[{sentBy:someOne,userName:John Doe},[]]

JSON对象似乎是匿名的,它们没有密钥。无论如何,我可以直接以String形式访问这些对象的密钥吗?如果不存在数据,那么为什么路径:$ .messageHeader.sentBy有效?

最佳答案

从JsonPath的README


  评估路径时,您需要了解何时
  路径是确定的。如果路径包含以下内容,则该路径是不确定的:
  
  
  ..-深度扫描运算符
  ?() - 一种表达
  [,(,)]-多个数组索引
  
  
  不定路径始终返回一个列表(由当前JsonProvider表示)。


这应该可以解释上述现象。

关于java - 如何使用JSONPath获取根级别JSON对象的键/名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30878199/

10-14 14:09
查看更多