Я использую jq
для преобразования вложенного файла .json
в .csv
, однако возникает проблема, когда у меня есть конкретный ключ , значение в пределах JSON. Используемый мной сценарий взят из этого ответа , который работает, если я исключу одну строку из входного файла.
ОШИБКА :
jq: error (at example.json:0): object ({"favicon":...) is not valid in a csv row
Сообщение об ошибке не очень наглядно, поскольку упоминаемый объект не является виновником.
json2csv.jq
paths as $path
| {path: $path, value: getpath($path)}
| select(.value|type == "object" )
| select( [.value[]][0] | type != "object")
| .path + ([.value[]])
| @csv
пример. json (который проверяется с помощью https://jsonlint.com):
{
"items": [
{
"id": 1234,
"title": "Title of Item",
"internet": {
"favicon": "https://example.com/icon.png",
"domain": "https://example.com"
},
"image": {
"gif": null,
"main": "https://example.com/image_large.png"
},
"description": {
"origin": null,
"resource": null
},
"referral": {
"owner": null,
"name": null
},
"url": "https://example.com/image.png?version=1"
}
],
"other": {
"data": 0,
"notes": 1,
"total": 1,
"misc": 1
}
}
Удаление следующего из JSON не ' t throw error from jq
:
, "url": "https://example.com/image.png?version=1"
Invocation :
$ jq -er -f json2csv.jq example.json
Я не могу действительно изменить файл .json
, потому что ему нужен проблематично c line, поэтому ищу решение от jq
.