考虑JSONPath的以下部分:
{
"result":[
{
"type":"Residence",
"street":"Piazza di Spagna",
"city":"-4:0"
},
{
"type":"Residence",
"street":"test",
"city":"-4:1"
}
]
}
是否可以获得所有节点名的列表?
例如,我想要一个列表,如下所示:类型、街道、城市。
7条答案
按热度按时间lsmepo6l1#
"试试这个"
输出将为
pxiryf3j2#
在PHP〉= 5.4上,你可以通过一行代码来获取密钥:
在较低版本(PHP〉= 5.2.16)上,必须将上述代码分成两行:
我用第二个参数True解码JSON字符串,强制结果为数组,然后调用
array_keys
获取array['result'][0]
的密钥。编辑:更灵活
你的例子可以像上面一样处理,但是如果原始JSON字符串有不同的键会发生什么?如果第一行
result
没有所有的键,上面的解决方案将失败。要获得all键,可以使用以下代码:或者,使用
array_filter
并使用以下代码:通过这两个等价的例子,我处理每个
result
行,合并$nodeNames
数组中的键,并使用array_unique
删除重复的键。k7fdbhmy3#
可以使用以下函数以数组格式打印所有键
打印r(数组键($数组));
nnvyjq4y4#
JSON路径肯定每次都要遵循这个结构吗?就像Result =〉Arrays中的一样,所有的数组都有相同的节点。
如果是,则以下操作将起作用:
用法如下:
意味着您可以捕获任何可能被传递并扰乱输出的无效JSON字符串。
尽管如我所述,只有当JSON路径遵循要放入OP的结构时,上面的解决方案才有效。
你可以在这里看到它的使用:https://ideone.com/dlvdu2
希望对你有帮助。
twh00eeo5#
是否可以获得
all the node-names
的列表?qxsslcnc6#
试试这个
6uxekuva7#
请检查下面的代码。.希望会工作