Оригинал на GitHub
Вопрос
В результате запроса по API к стороннему сервису приходит массив данных:
[
{
"domain": "some-domain.com",
"visible": 0,
"ads": 0
},
{
"domain": "another-domain.io",
"visible": 0,
"ads": 0
}
]
Я его добавляю в таблицу (создаю строки):
=: insertList(table: 'api_test'; field: 'name' = $json_extr[[domain]]; field: 'keywords' = $json_extr[[visible]]; field: 'ads' = $json_extr[[ads]])
~json_extr: jsonExtract(text: $api)
api: "here getFromScript"
При этом возникла ошибка Ключ domain
не обнаружен в одном из элементов массива. Его действительно может не быть, так-как так отдает запрашиваемый сервер. Что можно сделать?
Ответ
Можно разрешить этот момент несколькими путями:
Фильтровать по непустому значению в domain
и пропустить те строки, в которых его нет при помощи skip: true
:
=: insertList(table: 'api_test'; field: 'name' = $filter[[domain]]; field: 'keywords' = $filter[[visible]]; field: 'ads' = $filter[[ads]])
~filter: listFilter(list: $json_extr; key: "domain" != ""; skip: true)
json_extr: jsonExtract(text: $api)
api: "here getFromScript"
Перебрать все строки при помощи listReplace и записать во все строки ключ domain с условием, что если данные в изначальном массиве по этому ключу существуют — взять их, если не существуют — записать пустое значение:
=: insertList(table: 'api_test'; field: 'name' = $replace[[domain]]; field: 'keywords' = $replace[[visible]]; field: 'ads' = $replace[[ads]])
~replace: listReplace(list: $json_extr; action: "domain" = $domain; value: "value")
json_extr: jsonExtract(text: $api)
api: "here getFromScript"
domain: $#value[domain]