Как разобрать JSON файл из столбца в BigQuery - PullRequest
0 голосов
/ 26 марта 2020

Это файл JSON, который я пытаюсь проанализировать

[{"message":"Value","code":"1234"}]

Я пытаюсь проанализировать сообщение от JSON Я думаю, что проблема в том, что JSON началось с "[" вместо более распространенного "{"

. Это вопрос, который я считаю правильным, но, по-видимому, это не

JSON_EXTRACT_SCALAR(response,'$[0].message')

Обратите внимание, что «response» - это имя столбца, также известного как json_string_expr

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Вы можете применить:

WITH `project.dataset.table` AS (
  SELECT '{\n \"type\":\"invalid\",\n \"code\":\"invalidRequest\",\n \"details\":\"Missing or invalid Parameters\",\n \"moreInfo\":{\n \"fieldLevelErrors\":[\n {\n \"fieldName\":\"/*/prospect/identificationDocumentDetails[idType!=\\\"\\\"]/idNumber\",\n \"reasonCode\":\"Required/Invalid Format\",\n \"errorMessage\":\"Value\"\n }\n ]\n }\n}' response
)
SELECT JSON_EXTRACT(response,'$.details') as details, JSON_EXTRACT(response,'$.moreInfo.fieldLevelErrors[0].errorMessage') as error
FROM `project.dataset.table`

Возвращает следующий результат:

Row details                           error 
1   "Missing or invalid Parameters" "Value"
0 голосов
/ 26 марта 2020

Может быть опечатка в вашем реальном коде / запросе?
Работает для меня как есть - см. Пример ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '[{"message":"Value","code":"1234"}]' response
)
SELECT *, JSON_EXTRACT_SCALAR(response,'$[0].message')
FROM `project.dataset.table`

с выводом

Row response                            f0_  
1   [{"message":"Value","code":"1234"}] Value   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...