如果我有以下 JSON 数据:
{
"providers": {
"abc": {
"provider": "foo",
"token": "abc123"
},
"def": {
"provider": "bar",
"token": "def567"
}
}
}
我想找到一个返回“第一个”提供者 token 的 JSON 路径,即 abc123
。问题在于找到“第一个”,因为 providers
是一个对象,而不是一个数组。
我想我可以从 $.providers.*
开始,它返回以下数组:
[
{
"provider": "foo",
"token": "abc123"
},
{
"provider": "bar",
"token": "def567"
}
]
但我似乎无法对该数组执行任何操作。例如$.providers.*[0]
不起作用。
我所要求的可能吗? (如果重要的话,我正在使用 MySQL,尽管我正在寻找通用的 JSONPath 解决方案。)
最佳答案
您需要使用提供的表/子查询来解析出您需要的部分。
Yes, except I don't know that abc is the first provider.
这会解析出第一个提供者元素..
查询
SELECT
*
, records_json_array.json_array->'$[0].token'
FROM (
SELECT
records.json->'$.providers.*' AS json_array
FROM (
SELECT
'{
"providers": {
"abc": {
"provider": "foo",
"token": "abc123"
},
"def": {
"provider": "bar",
"token": "def567"
}
}
}' AS json
FROM
DUAL
) AS records
) AS records_json_array
结果
| json_array | records_json_array.json_array->'$[0].token' |
| -------------------------------------------------------------------------------- | ---------------------------------------------- |
| [{"token": "abc123", "provider": "foo"}, {"token": "def567", "provider": "bar"}] | "abc123" |
关于mysql - 提取计算出的 JSONpath 响应的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53070087/