Может ли кто-нибудь рекомендовать JSON-анализатор Unix (выберите ваш вкус), который можно использовать для анализа значений из ответа JSON в конвейере?Unix командной строки JSON parser?
ответ
Во-первых, установить модуль JSON из CPAN:
cpan JSON
Затем вы можете использовать эту командной строки анализатор (который можно положить в Баш псевдоним, если вам нравится):
perl -MData::Dumper -MJSON=from_json -ne'print Dumper(from_json($_))'
Я смущен результатом этого. Выход включает в себя жирные стрелки (=>) между клавишами и значениями. Это не JSON. –
@landon: нет, вход JSON, а выход - это собственная структура данных Perl, и вы можете продолжить работу, если это необходимо. Точка этого однострочного слоя - это данные, которые намного легче читать. – Ether
Вы можете попробовать jsawk, как предложено в this answer.
Действительно, вы можете взломать быстрый скрипт python для этого.
Интересно, посмотрим. – Xailor
Также есть JSON command line processing toolkit, если в вашем стеке у вас есть node.js и npm.
И еще "json" command для массирования JSON в командной строке Unix.
А вот другие альтернативы:
- JQ: http://stedolan.github.io/jq/
- JSON: выберите: http://jsonselect.org/
- JSON-команда: https://github.com/zpoley/json-command
- JSONPath: http://goessner.net/articles/JsonPath/, http://code.google.com/p/jsonpath/wiki/Javascript
- jsawk: https://github.com/micha/jsawk
- jshon: http://kmkeen.com/jshon/
- json2: https://github.com/vi/json2
Простая установка, на Ubuntu: sudo apt-get install python-pip && sudo pip install jsonpipe –
@ divideandconquer.se Извините, но вы устанавливаете этот инструмент, используя npm с 'npm install json'. – rednaw
@rednaw К сожалению, пакет NPM «json», похоже, теперь перехвачен совершенно другим пакетом. – Brad
заказ TickTick.
Это настоящий синтаксический анализатор Bash JSON.
#!/bin/bash
. /path/to/ticktick.sh
# File
DATA=`cat data.json`
# cURL
#DATA=`curl http://foobar3000.com/echo/request.json`
tickParse "$DATA"
echo ``pathname``
echo ``headers["user-agent"]``
Gotta love tools-level tools :) – Xailor
Любое упоминание Jshon или JSON.sh?
https://github.com/keenerd/jshon
трубы JSON к ней, и она пересекает объекты JSon и печатает путь к текущему объекту (в виде массива JSON), а затем объект, без пробелов.
http://kmkeen.com/jshon/
Jshon загружает текст JSON из стандартного ввода, выполняет действия, а затем отображает последнее действие на стандартный вывод, а также было сделано, чтобы быть частью обычного конвейера обработки текста.
Пример использования OSX: 'brew install jshon',' cat * .json | jshon' – kenorb
Я создал модуль, специально разработанный для командной строки JSON манипуляции:
https://github.com/ddopson/underscore-cli
- ГИБКИЙ - "Swiss-армейском нож" инструмент для обработки данных в формате JSON - могут быть использованы как простой симпатичный принтер или в виде полнофункциональной строки Javascript
- POWERFUL - Предоставляет полную мощность и функциональность underscore.js (плюс underscore.string)
- SIMPLE - Делает это просто написать JS остротами аналогично использованию «Perl -pe»
- прикован - Несколько команд invokations могут быть соединены вместе, чтобы создать обработки данных трубопровода
- Multi- ФОРМАТ - Рич поддержка форматов ввод/вывод - довольно-печать, строгий формат JSON и т.д. [скоро]
- ЗАДОКУМЕНТИРОВАН - Отличная документация командной строки с несколькими примерами для каждой команды
Это позволяет делать мощные вещи действительно легко:
cat earthporn.json | underscore select '.data .title'
# [ 'Fjaðrárgljúfur canyon, Iceland [OC] [683x1024]',
# 'New town, Edinburgh, Scotland [4320 x 3240]',
# 'Sunrise in Bryce Canyon, UT [1120x700] [OC]',
# ...
# 'Kariega Game Reserve, South Africa [3584x2688]',
# 'Valle de la Luna, Chile [OS] [1024x683]',
# 'Frosted trees after a snowstorm in Laax, Switzerland [OC] [1072x712]' ]
cat earthporn.json | underscore select '.data .title' | underscore count
# 25
underscore map --data '[1, 2, 3, 4]' 'value+1'
# prints: [ 2, 3, 4, 5 ]
underscore map --data '{"a": [1, 4], "b": [2, 8]}' '_.max(value)'
# [ 4, 8 ]
echo '{"foo":1, "bar":2}' | underscore map -q 'console.log("key = ", key)'
# key = foo
# key = bar
underscore pluck --data "[{name : 'moe', age : 40}, {name : 'larry', age : 50}, {name : 'curly', age : 60}]" name
# [ 'moe', 'larry', 'curly' ]
underscore keys --data '{name : "larry", age : 50}'
# [ 'name', 'age' ]
underscore reduce --data '[1, 2, 3, 4]' 'total+value'
# 10
И это имеет один из лучших «смарт-пробельных» JSON форматтеров доступны:
Если у вас есть запросы функций, комментировать это сообщение или добавить проблему в github. Я был бы рад определить приоритеты функций, которые необходимы членам сообщества.
Удивительный!Но можно ли запускать консольные команды по данным JSON? Например: с учетом файла JSON с массивом URL, 'wget' каждого URL. –
@CamiloMartin - самый простой способ сделать это - распечатать URL-адреса, по одному URL-адресу в строке, а затем запустить через xargs или GNU-параллель. –
@DaveDopson Можно ли использовать 'underscore' для разбора вложенного json с вложенными объектами и массивами? – user227666
Я предпочитаю python -m json.tool
, который, по-видимому, доступен по умолчанию для большинства операционных систем * nix по умолчанию.
$ echo '{"foo":1, "bar":2}' | python -m json.tool
{
"bar": 2,
"foo": 1
}
Но следует отметить, что это будет сортировать все ключи в алфавитном порядке, который является или может быть хорошей вещью в том, где был создан JSON на каком-то языке, который используется неупорядоченные HashMaps ...
Недооцененный ответ. Это хорошая альтернатива командной строки, если целью является проверка данного файла JSON как содержащего действительный JSON. – scorpiodawg
В этом ответе не описывается, как проверять значения указанного ключа. –
@ColinSu, но это был не оригинальный вопрос. 'json.tool' - всего лишь короткая рука для красивой печати json. Если вам нужно извлечь/обработать json-данные в сценарии оболочки, я бы использовал 'jq', который является чистым, удивительным в том, что делает ... – muhqu
Я просто сделанный jkid, который представляет собой небольшой командной строки json explorer, который я сделал, чтобы легко исследовать большие объекты json. Объекты могут быть исследованы «трансверсально», и опция «Предварительный просмотр» позволяет избежать переполнения консоли.
$ echo '{"john":{"size":20, "eyes":"green"}, "bob":{"size":30, "eyes":"brown"}}' > test3.json
$ jkid . eyes test3.json
object[.]["eyes"]
{
"bob": "brown",
"john": "green"
}
Как я могу установить 'jkid' в mac? – user227666
Если вы ищете портативный C скомпилированного инструмент:
http://stedolan.github.com/jq/
С сайта:
JQ, как SED для данных JSON - вы можете использовать его для среза и фильтрации, а также для преобразования и преобразования структурированных данных с той же легкостью, что и sed, awk, grep и друзья позволяют играть с текстом.
jq может исказить формат данных, который у вас есть, в том, который вы хотите с очень небольшим усилием, а программа для этого часто короче и проще, чем вы ожидали.
Учебник: http://stedolan.github.com/jq/tutorial/
Руководство: http://stedolan.github.com/jq/manual/
Скачать: http://stedolan.github.com/jq/download/
Лучший ответ здесь imo. Никаких тяжелых зависимостей, небольшой, мощной, хорошей документации и бриза, чтобы попробовать. Большое спасибо за предложение этого! – FrozenCow
На Ubuntu/Debian вы можете просто «apt install jq». –
Для Bash/Python, вот основная обертка Питона simplejson
:
json_parser() {
local jsonfile="my_json_file.json"
local tc="import simplejson,sys; myjsonstr=sys.stdin.read(); "`
`"myjson=simplejson.loads(myjsonstr);"
# Build python print command based on [email protected]
local printcmd="print myjson"
for ((argn=1; argn<=$#; argn++)); do
printcmd="$printcmd['${!argn}']"
done
local result=$(python -c "$tc $printcmd.keys()" <$jsonfile 2>/dev/null \
|| python -c "$tc $printcmd" <$jsonfile 2>/dev/null)
# For returning space-separated values
echo $result|sed -e "s/[]|[|,|']//g"
#echo $result
}
Он действительно обрабатывает только вложенный словарь данных, но он работает для того, что мне нужно, и полезно для прохождения через json. Это, вероятно, можно было бы приспособить к вкусу.
В любом случае, что-то доморощенное для тех, кто не хочет источника в еще одной внешней зависимости. За исключением питона, конечно.
Ex. json_parser {field1} {field2}
будет работать print myjson['{field1}']['{field2}']
, получая либо ключи, либо значения, связанные с {field2}
, разделенные пробелами.
- 1. C++ для командной строки unix
- 2. расширенный улов командной строки unix
- 3. Гибкий интерфейс командной строки UNIX с Python
- 4. XML Parser из командной строки в Perl
- 5. Библиотека Parser для командной строки - Логический параметр
- 6. Библиотека Java: опция командной строки Parser
- 7. PHP JSON Parser v.s. Javascript JSON Parser
- 8. Запуск командной строки в unix через Java
- 9. GUID командной строки для Unix и Windows?
- 10. найти и заменить из командной строки UNIX
- 11. Unix (osx) процессор обработки командной строки?
- 12. Грамматика для параметров командной строки Unix
- 13. Функция редактирования файла командной строки UNIX
- 14. Ссылка на аргумент командной строки UNIX
- 15. Xcode: UNIX командной строки Инструменты Установка
- 16. Чтение аргументов командной строки Java в Unix
- 17. Проблемы с командами командной строки Unix
- 18. командной строки приложения: Unix команда CD
- 19. Запуск исполняемого файла Unix из командной строки
- 20. JSON parser возвращает Null
- 21. чтение Unix wild card filenames из командной строки в Python
- 22. Parser for JSON String
- 23. JSON Parser -java.lang.NoSuchFieldError: defaultReader
- 24. Groovy json parser
- 25. Invalid JSON Parser Ошибка
- 26. Получить сообщение об ошибке из командной строки Parser Library
- 27. Получения TargetInvocationException с помощью командной строки Parser библиотеки
- 28. Как работает JSON Parser?
- 29. Unix командной AWK
- 30. Ajax JSON Parser Ошибка
Мне нравится использовать pythonpy (https://github.com/russell91/pythonpy): cat a.json | py -ji -x 'x.attr' – RussellStewart
Связанный: [Инструмент командной строки для разбора входа JSON для Unix?] (http://softwarerecs.s.stackexchange.com/q/19018/3474) на SR – kenorb
См. также [Читать json data в сценарии оболочки] (http://stackoverflow.com/questions/20488315/read-the-json-data-in-shell-script) – koppor