Json格式为
{
"query": {
"pages": {
"294195": {
"id": 294195,
"title": "title 123",
"detail": "detail content..."
}
}
}
}
我想阅读294195
以及此元素下的详细信息。
但实际上元素名称'294195'是动态的。
我不能使用294195
作为元素名称:
"Json"->'query'->'pages'->'294195'
有没有像
那样"Json"->'query'->'pages'->Firt_Element_Name->'id'
注意:"Json"
是列名,类型为Json。
答案 0 :(得分:0)
Json.query.pages[0].title
Json.query.pages[0].details
为“详细信息”提供“标题”和第一个密钥对值的第一个密钥对值,而不管第一个生成的数字是什么。无论您动态获得#,这都有效。将它弹出到一个函数中,您可以将它们设置为var并将它们连接成一个字符串,或将它们推入一个数组/对象。
答案 1 :(得分:0)
这是一个有点尴尬的b / c我必须先创建你的原始json对象才能查询它,但这里是一个PostgreSQL剪切和粘贴解决方案,它将在294195下提取数据:
with origjson as (select '{"query": {"pages": {"294195": {"id": 294195,"title": "title 123","detail": "detail content..."}}}}'::jsonb as pagedata)
,firstid as (select jsonb_object_keys(pagedata #> '{query, pages}') as id from origjson)
select pagedata #> ('{query, pages, ' || (select id from firstid limit 1) || '}')::text[] from origjson;
结果:
{"id": 294195, "title": "title 123", "detail": "detail content..."}