Выше код может не работать. Вышеупомянутый динамический запрос будет разрешен следующим примером. Токен является целым числом 35.
collection.find("_id":"{$gt: 35}")
.sort({'_id': -1}).limit(25).toArray(function(error, films);
, в результате чего возникает ошибка
Правильный синтаксис должен быть:
collection.find("_id":{$gt: 35}).
Двойные «" кавычки не должны быть там.
Существует TidyJSON.
Это - C#, поэтому возможно, можно добраться, это для компиляции с Моно , и продолжающий работать *отклоняет. Никакие гарантии, хотя, извините.
$ echo '{ "foo": "lorem", "bar": "ipsum" }' \
> | python -c'import fileinput, json;
> print(json.dumps(json.loads("".join(fileinput.input())),
> sort_keys=True, indent=4))'
{
"bar": "ipsum",
"foo": "lorem"
}
Примечание: Это не способ сделать это.
То же в Perl:
$ cat json.txt \
> | perl -0007 -MJSON -nE'say to_json(from_json($_, {allow_nonref=>1}),
> {pretty=>1})'
{
"bar" : "ipsum",
"foo" : "lorem"
}
Примечание 2: Если Вы работаете
echo '{ "Düsseldorf": "lorem", "bar": "ipsum" }' \
| python -c'import fileinput, json;
print(json.dumps(json.loads("".join(fileinput.input())),
sort_keys=True, indent=4))'
приятно читаемое слово становится закодированным \u
{
"D\u00fcsseldorf": "lorem",
"bar": "ipsum"
}
Если бы остаток от Вашего конвейера корректно обработает unicode, и Вы хотели бы, чтобы Ваш JSON также был человечески-благоприятен, просто использовал ensure_ascii=False
echo '{ "Düsseldorf": "lorem", "bar": "ipsum" }' \
| python -c'import fileinput, json;
print json.dumps(json.loads("".join(fileinput.input())),
sort_keys=True, indent=4, ensure_ascii=False)'
и Вы доберетесь:
{
"Düsseldorf": "lorem",
"bar": "ipsum"
}
time
, как предложено, Вы don' t должны решить. Это сообщает и о прошедшем времени и о процессорном времени.
– Mike Seymour
16 June 2012 в 11:48
Благодаря J.F. Очень полезные указатели Sebastian, вот немного расширенный сценарий, который я придумал:
#!/usr/bin/python
"""
Convert JSON data to human-readable form.
Usage:
prettyJSON.py inputFile [outputFile]
"""
import sys
import simplejson as json
def main(args):
try:
if args[1] == '-':
inputFile = sys.stdin
else:
inputFile = open(args[1])
input = json.load(inputFile)
inputFile.close()
except IndexError:
usage()
return False
if len(args) < 3:
print json.dumps(input, sort_keys = False, indent = 4)
else:
outputFile = open(args[2], "w")
json.dump(input, outputFile, sort_keys = False, indent = 4)
outputFile.close()
return True
def usage():
print __doc__
if __name__ == "__main__":
sys.exit(not main(sys.argv))
Можно просто использовать стандартные инструменты как jq или json_pp.
echo '{ "foo": "lorem", "bar": "ipsum" }' | json_pp
или
echo '{ "foo": "lorem", "bar": "ipsum" }' | jq
оба украсит вывод как следующее (jq еще более красочный):
{
"foo": "lorem",
"bar": "ipsum"
}
огромное преимущество jq состоит в том, что он может сделать НАМНОГО больше, если требуется проанализировать и обработать json.
В * nix чтение из stdin и запись в stdout работает лучше:
#!/usr/bin/env python
"""
Convert JSON data to human-readable form.
(Reads from stdin and writes to stdout)
"""
import sys
try:
import simplejson as json
except:
import json
print json.dumps(json.loads(sys.stdin.read()), indent=4)
sys.exit(0)
Поместите это в файл (я назвал свой «prettyJSON» в честь ответа AnC ] ) в вашем PATH и chmod + x
it, и все готово.
Или, с Ruby:
echo '{ "foo": "lorem", "bar": "ipsum" }' | ruby -r json -e 'jj JSON.parse gets'
With Python 2.6+ you can just do:
echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool
or, if the JSON is in a file, you can do:
python -m json.tool my_json.json
if the JSON is from an internet source such as an API, you can use
curl http://my_url/ | python -m json.tool
For convenience in all of these cases you can make an alias:
alias prettyjson='python -m json.tool'
For even more convenience with a bit more typing to get it ready:
prettyjson_s() {
echo "$1" | python -m json.tool
}
prettyjson_f() {
python -m json.tool "$1"
}
prettyjson_w() {
curl "$1" | python -m json.tool
}
for all the above cases. You can put this in .bashrc
and it will be available every time in shell. Invoke it like prettyjson_s '{"foo": "lorem", "bar": "ipsum"}'
.
Сценарий JSON Ruby Gem поставляется в комплекте со скриптом оболочки для притворства JSON:
sudo gem install json
echo '{ "foo": "bar" }' | prettify_json.rb
Загрузка скрипта: gist.github.com/3738968
В Perl используйте модуль CPAN JSON :: XS
. Он устанавливает инструмент командной строки json_xs
.
Проверить:
json_xs -t null < myfile.json
Преобразовать файл JSON src.json
в pretty.json
:
< src.json json_xs > pretty.json
Если у вас нет json_xs
, попробуйте json_pp
. «pp» означает «чистый Perl» - инструмент реализован только на Perl, без привязки к внешней библиотеке C (что означает XS, Perl «Система расширений»).
Я использую аргумент «пробел» в JSON.stringify
, чтобы красиво печатать JSON в JavaScript.
Примеры:
// Indent with 4 spaces
JSON.stringify({"foo":"lorem","bar":"ipsum"}, null, 4);
// Indent with tabs
JSON.stringify({"foo":"lorem","bar":"ipsum"}, null, '\t');
Из командной строки Unix с помощью Node.js, указав JSON в командной строке:
$ node -e "console.log(JSON.stringify(JSON.parse(process.argv[1]), null, '\t'));" \
'{"foo":"lorem","bar":"ipsum"}'
Возвращает:
{
"foo": "lorem",
"bar": "ipsum"
}
Из командной строки Unix с помощью Node.js, указав имя файла, содержащее JSON с отступом в четыре пробела:
$ node -e "console.log(JSON.stringify(JSON.parse(require('fs') \
.readFileSync(process.argv[1])), null, 4));" filename.json
Использование конвейера:
echo '{"foo": "lorem", "bar": "ipsum"}' | node -e \
"\
s=process.openStdin();\
d=[];\
s.on('data',function(c){\
d.push(c);\
});\
s.on('end',function(){\
console.log(JSON.stringify(JSON.parse(d.join('')),null,2));\
});\
"
Решения Дж. Ф. Себастьяна не работали у меня в Ubuntu 8.04.
Вот модифицированная версия Perl, которая работает со старой библиотекой JSON 1.X:
perl -0007 -MJSON -ne 'print objToJson(jsonToObj($_, {allow_nonref=>1}), {pretty=>1}), "\n";'
ktp
отлично допустимы название схемы. Например, пользовательский протокол мог определить эту схему. – Alex 25 August 2011 в 12:49