2016-11-19 2 views
-1

У меня есть файл JSON, созданный в качестве ответа, путем параллельного запуска нескольких операторов curl (запросы GET для службы).разбор файла JSON с несколькими JSON

Теперь, когда я пытаюсь разобрать файл JSON с помощью питона он не так как файл имеет несколько JSONs добавляется

Ошибка:

Ошибка: Синтаксическая ошибка в строке 1: ... CT_AGGREGATE "}] }]}]} {"serviceResponseTim -----------------------^ Ожидание 'EOF', '}', ',', ']' , получил '{'

Пример в файле:

{"serviceResponseTime": 510, ........... .......: [{"categoryId": 28162, "metricValue": 97, "days": "NONE" , "metricMappedType": "PRODUCT_AGGREGATE" }]}]}]} {"serviceResponseTime": 387, "products": [{"productReferenceId": ................ ...

Как вы видите, это 2 ответа, полученных из 2 операторов curl, но когда я запускал их параллельно с помощью xargs, он добавлял вывод в 1 строку.

Теперь моя проблема заключается в анализе этого файла.

Может ли кто-нибудь предложить способ поместить вывод команд curl в отдельные строки в файле.

Как я думал, если бы я мог извлечь часть с начала файла до «}]}]}]} {", вырезать из текущего файла и поместить его в другой файл и запустить парсер JSON на этот файл, который будет иметь всего 1 JSON o/p. Повторите это в цикле, пока исходный файл не станет пустым после того, как мы вырезаем из него каждый JSON. Теперь моя проблема: я не могу извлечь из начала строки в}]}]}]} {.

Также все JSON o/ps добавлены в 1 строку и не находятся на отдельных строках, иначе я бы читал по строкам.

Может кто поможет здесь?

ответ

1

Допустим, у вас есть этот входной файл:

{"name": "foo"}{"name": "bar"} 

Вы можете использовать jq команду:

jq -s . input.file 

передать input.file в:

[ 
    { 
    "name": "foo" 
    }, 
    { 
    "name": "bar" 
    } 
] 

Я надеюсь, что помогает

+0

I inst alled jq на моем mac и запустить команду, но он говорит -sh: jq: команда не найдена – donny

Смежные вопросы