Как получить доступ к элементам (ключам) массива json, значениям в типе вложенного словаря json с помощью postgresql?
У меня есть вложенная структура json. Как извлечь определенные элементы (ключи) и значения?
Как получить доступ к "sky: sell": "1" или "U1":"0000"? Я пробовал json_object_keys и json_array_elements для извлечения массива. Но я точно не знаю, как это сделать. Пример кода:
Таблица - запись и имя столбца: отчет
{
"PIname": {
"n1": "x1",
"n2": "x2",
"params": {
"S1": {
"code1": "y1",
"Code2": "y2",
},
"id": "2d",
"Dest": {
"Code3": "mi"
}
},
"PIDataArea": {
"m1": null,
"PInven": {
"head": {
"Code4": "Increase",
"line": "2020-01"
},
"PILine": [
{
"u1": "0000",
"u2": "0",
"u3": "1",
"modes": {
"@cID": "Sng",
"#txt": "12.21"
} },
{
"Qualify": ".0001",
"QOrder": "1",
"UPriceAmt": {
"@cID": "sng",
"#txt": "13" },
"sky:Qa": ".000",
"sky:Partcode": {
"@c1ID": "a"
},
"sky:SCode": "Ni",
"sky:PItem": {
"sky:ID": "h"
},
"sky:Forest": {
"sky:q1": [
{
"sky:selling": "1"
}
{
"sky:selling": "0"
}
]
} } }} }}
Я пробовал много, один пример запроса здесь, например, Выберите * из записи r Где существует (выберите отчет ->'sky: sales' из json_each(r.report) b, где b.value->>'sky: sales' Ilike '0');
1 ответ
Вы можете использовать
json_path_query
или
jsonb_path_query
функция. Пример извлечения элемента с ключом = "небо: продажа":
json_path_query(r.report, $.** ? (@.key == 'sky:selling'))