因此,我一直使用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/