PostgresSQL JSON-запрос - PullRequest
       4

PostgresSQL JSON-запрос

0 голосов
/ 14 декабря 2018

У меня есть json, хранящийся в столбце (oid) со следующей структурой:

{
  "fullName": "test test",
  "personDetails": {
    "address": "Advisor",
    "phoneNumber": "clare.railton@heptonstalls.co.uk"
  },
  "id": "6765788-yt67",
  "submittedDocument": {
    "answers": [
      {
        "questionId": "2",
        "responses": [
          {
            "value": "123456"
          }
        ]
      },
      {
        "questionId": "2.1",
        "responses": [
          {
            "IdA": 1,
            "IdB": 1,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 2,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 3,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 4,
            "value": "true"
          }
        ]
      }
    ]
},
    "date": "2018-11-22",
    "PeriodId": 123456
}

Как бы я получил значение ответа на все номера вопросов?Мне удалось получить структуру json из столбца oid с помощью функции lo_get, но я изо всех сил пытаюсь получить нужные мне значения.

Большое спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

Вы уверены, что хотите, чтобы большой объект сохранял данные json?Postgres может обрабатывать типы столбцов json в таблицах:

CREATE TABLE test_json (id INTEGER PRIMARY KEY, json json);
INSERT INTO test_json VALUES(1,'{
  "fullName": "test test",
  "personDetails": {
    "address": "Advisor",
    "phoneNumber": "clare.railton@heptonstalls.co.uk"
  },
  "id": "6765788-yt67",
  "submittedDocument": {
    "answers": [
      {
        "questionId": "2",
        "responses": [
          {
            "value": "123456"
          }
        ]
      },
      {
        "questionId": "2.1",
        "responses": [
          {
            "IdA": 1,
            "IdB": 1,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 2,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 3,
            "value": "false"
          },
          {
            "IdA": 1,
            "IdB": 4,
            "value": "true"
          }
        ]
      }
    ]
},
    "date": "2018-11-22",
    "PeriodId": 123456
}');

SELECT json_extract_path(
json_array_elements(
json_extract_path(
json_array_elements(
json_extract_path((json),'submittedDocument','answers')
),'responses')
),'value'
)FROM test_json;

См .:

https://www.postgresql.org/docs/current/functions-json.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...