it-swarm.asia

كيف يمكنني طباعة JSON بشكل جميل في برنامج شل؟

هل هناك نص (Unix) Shell لتنسيق JSON في شكل مقروء من قبل الإنسان؟

في الأساس ، أريده أن يحول ما يلي:

{ "foo": "lorem", "bar": "ipsum" }

... إلى شيء مثل هذا:

{
    "foo": "lorem",
    "bar": "ipsum"
}
2726
AnC

مع Python 2.6+ يمكنك فقط القيام بما يلي:

echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool

أو ، إذا كانت JSON موجودة في ملف ، فيمكنك القيام بما يلي:

python -m json.tool my_json.json

إذا كان JSON من مصدر إنترنت مثل API ، فيمكنك استخدامه

curl http://my_url/ | python -m json.tool

للراحة في جميع هذه الحالات ، يمكنك إنشاء اسم مستعار:

alias prettyjson='python -m json.tool'

لمزيد من الراحة مع كتابة أكثر قليلاً لإعدادها:

prettyjson_s() {
    echo "$1" | python -m json.tool
}

prettyjson_f() {
    python -m json.tool "$1"
}

prettyjson_w() {
    curl "$1" | python -m json.tool
}

لجميع الحالات المذكورة أعلاه. يمكنك وضع هذا في .bashrc وسيكون متاحًا في كل مرة في Shell. استدعيه مثل prettyjson_s '{"foo": "lorem", "bar": "ipsum"}'.

4056
B Bycroft

يمكنك استخدام: jq

إنه سهل الاستخدام للغاية ويعمل بشكل رائع! يمكنه التعامل مع هياكل JSON الكبيرة جدًا ، بما في ذلك الجداول. يمكنك العثور على دروسهم هنا .

هنا مثال:

$ jq . <<< '{ "foo": "lorem", "bar": "ipsum" }'
{
  "bar": "ipsum",
  "foo": "lorem"
}

أو بعبارة أخرى:

$ echo '{ "foo": "lorem", "bar": "ipsum" }' | jq .
{
  "bar": "ipsum",
  "foo": "lorem"
}
805
Vita Pluvia

يمكنني استخدام وسيطة "space" الخاصة بـ 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));\
 });\
"
366
Somu

كتبت أداة تحتوي على أحد أفضل تنسيقات "المسافة الذكية" المتاحة. إنه ينتج إخراجًا أكثر قابلية للقراءة وأقل مطول من معظم الخيارات الأخرى هنا.

تسطير أسفل السطر

هذا ما يشبه "مسافة بيضاء ذكية":

 

قد أكون متحيزًا بعض الشيء ، لكنه أداة رائعة لطباعة ومعالجة بيانات JSON من سطر الأوامر. إنه سهل الاستخدام ولديه تعليمات/وثائق شاملة لسطر الأوامر. إنه سكين الجيش السويسري الذي أستخدمه في 1001 من المهام الصغيرة المختلفة التي ستكون مزعجة بشكل مدهش للقيام بأي طريقة أخرى.

حالة الاستخدام الأخيرة: Chrome ، وحدة تحكم Dev ، علامة تبويب الشبكة ، تصدير الكل كملف HAR ، "cat site.har | تسطير سفلي حدد" .url "- outfmt text | grep mydomain"؛ لدي الآن قائمة مرتبة ترتيبًا زمنيًا بجميع عمليات جلب عناوين URL التي تم إجراؤها أثناء تحميل موقع شركتي.

الطباعة جميلة سهلة:

underscore -i data.json print

نفس الشيء:

cat data.json | underscore print

نفس الشيء ، أكثر وضوحا:

cat data.json | underscore print --outfmt pretty

هذه الأداة هي مشروع شغفي الحالي ، لذا إذا كان لديك أي طلبات للميزات ، فهناك فرصة جيدة لأن أتناولها.

328
Dave Dopson

عادة ما أفعل فقط:

echo '{"test":1,"test2":2}' | python -mjson.tool

ولاسترجاع بيانات محددة (في هذه الحالة ، قيمة "اختبار"):

echo '{"test":1,"test2":2}' | python -c 'import sys,json;data=json.loads(sys.stdin.read()); print data["test"]'

إذا كانت بيانات JSON في ملف:

python -mjson.tool filename.json

إذا كنت تريد أن تفعل كل شيء دفعة واحدة مع curl في سطر الأوامر باستخدام رمز المصادقة:

curl -X GET -H "Authorization: Token wef4fwef54te4t5teerdfgghrtgdg53" http://testsite/api/ | python -mjson.tool
171
locojay

بفضل مؤشرات 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 __== "__main__":
    sys.exit(not main(sys.argv))
85
AnC

إذا كنت تستخدم npm و Node.js ، فيمكنك تنفيذ npm install -g json ثم توجيه الأمر عبر json. افعل json -h للحصول على جميع الخيارات. يمكن أيضًا سحب حقول محددة وتلوين الإخراج باستخدام -i.

curl -s http://search.Twitter.com/search.json?q=node.js | json
72
isaacs

انها ليست بسيطة جدا مع وسيلة أصلية مع أدوات jq .

فمثلا:

cat xxx | jq .
69
Olexandr Minzak

في * 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 ، ومن الجيد أن تذهب.

68
Daryl Spitzer

مع 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).

68
knb

يتم تضمين JSON Ruby Gem مع برنامج نصي شل لتوضيح JSON:

Sudo gem install json
echo '{ "foo": "bar" }' | prettify_json.rb

تنزيل البرنامج النصي: Gist.github.com/3738968

64
Paul Horsfall

UPDATEأنا أستخدم jq الآن كما هو مقترح في إجابة أخرى. إنها قوية للغاية في تصفية JSON ، ولكن في أبسط صورها ، إنها أيضًا طريقة رائعة لطباعة JSON بشكل جميل للعرض.

jsonpp هو سطر أوامر جميل جداً JSON طابعة.

من README:

استجابات خدمة الويب المطبوعة جميلة مثل:

curl -s -L http://<!---->t.co/tYTq5Pu | jsonpp

وجعل الملفات قيد التشغيل على القرص الخاص بك جميلة:

jsonpp data/long_malformed.json

إذا كنت تستخدم نظام التشغيل Mac OS X ، فيمكنك brew install jsonpp. إذا لم يكن الأمر كذلك ، يمكنك ببساطة نسخ الثنائي إلى مكان ما في $PATH الخاص بك.

55
jordelver

جرب pjson . لها ألوان!

echo '{"json":"obj"} | pjson

تثبيته مع pip:

⚡ pip install pjson

ثم قم بنقل أي محتوى JSON إلى pjson.

51
Johann Philipp Strathausen

هكذا أفعل ذلك:

curl yourUri | json_pp

إنها تقصر الكود وتنجز المهمة.

46
Tadej
$ 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"
}

ملاحظة: ليسطريقة للقيام بذلك.

نفس الشيء في بيرل:

$ 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))'

الكلمة المقروءة بشكل جيد تصبح مشفرة

{
    "D\u00fcsseldorf": "lorem", 
    "bar": "ipsum"
}

إذا كان الجزء المتبقي من خط الأنابيب الخاص بك سوف يتعامل بأمان مع يونيكود وترغب في أن تكون 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"
}
42
jfs

أستخدم jshon للقيام بالضبط بما تصفه. مجرد تشغيل:

echo $COMPACTED_JSON_TEXT | jshon

يمكنك أيضًا تمرير الوسائط لتحويل بيانات JSON.

39
yardena

أو مع روبي:

echo '{ "foo": "lorem", "bar": "ipsum" }' | Ruby -r json -e 'jj JSON.parse gets'
37
darscan

تحقق من Jazor . إنه سطر أوامر JSON بسيط مكتوب بلغة روبي.

gem install jazor
jazor --help
36
Mike

ما عليك سوى توجيه الإخراج إلى jq ..

مثال:

twurl -H ads-api.Twitter.com '.......' | jq .
29
Ackshaey Singh

JSONLint له تطبيق مفتوح المصدر على GitHub يمكن استخدامه في سطر الأوامر أو تضمينه في مشروع Node.js.

npm install jsonlint -g

وثم

jsonlint -p myfile.json

أو

curl -s "http://api.Twitter.com/1/users/show/user.json" | jsonlint | less
28
Salman A

سيناريو باش بسيط لطباعة json جميلة

json_pretty.sh

#/bin/bash

grep -Eo '"[^"]*" *(: *([0-9]*|"[^"]*")[^{}\["]*|,)?|[^"\]\[\}\{]*|\{|\},?|\[|\],?|[0-9 ]*,?' | awk '{if ($0 ~ /^[}\]]/ ) offset-=4; printf "%*c%s\n", offset, " ", $0; if ($0 ~ /^[{\[]/) offset+=4}'

مثال:

cat file.json | json_pretty.sh
28
Evgeny Karpov

مع Perl ، إذا قمت بتثبيت JSON :: PP من CPAN ، فستحصل على json_pp الأمر. سرقة مثال from B Bycroft ستحصل على:

[[email protected] ~]$ echo '{"foo": "lorem", "bar": "ipsum"}' | json_pp
{
   "bar" : "ipsum",
   "foo" : "lorem"
}

تجدر الإشارة إلى أن json_pp يأتي مثبتًا مسبقًا مع Ubuntu 12.04 (على الأقل) و Debian في /usr/bin/json_pp

19
Philip Durbin

أوصي باستخدام الأداة المساعدة لسطر الأوامر json_xs المضمنة في الوحدة النمطية JSON :: XS Perl. JSON :: XS هي وحدة بيرل لتسلسل/إلغاء تسلسل JSON ، على جهاز Debian أو Ubuntu ، يمكنك تثبيته مثل هذا:

Sudo apt-get install libjson-xs-Perl

من الواضح أنه متاح أيضًا على CPAN .

لاستخدامه لتنسيق JSON الذي تم الحصول عليه من URL ، يمكنك استخدام curl أو wget مثل هذا:

$ curl -s http://page.that.serves.json.com/json/ | json_xs

أو هذا:

$ wget -q -O - http://page.that.serves.json.com/json/ | json_xs

ولتنسيق JSON المتضمن في ملف ، يمكنك القيام بذلك:

$ json_xs < file-full-of.json

لإعادة تهيئة كـ YAML ، والتي يعتبرها بعض الناس أكثر قابلية للقراءة إنسانيًا من JSON:

$ json_xs -t yaml < file-full-of.json
18
htaccess
  1. brew install jq
  2. command + | jq
  3. (مثال: curl localhost:5000/blocks | jq)
  4. استمتع!

 enter image description here

16
alexanderjsingleton

jj بسرعة فائقة ، يمكنه التعامل مع مستندات JSON الضخمة اقتصاديًا ، ولا تعبث بأرقام JSON صالحة ، وسهلة الاستخدام ، على سبيل المثال.

jj -p # for reading from STDIN

أو

jj -p -i input.json

إنها (2018) لا تزال جديدة تمامًا ، لذا ربما لن تتعامل مع JSON غير الصالحة بالطريقة التي تتوقعها ، ولكن من السهل تثبيتها على المنصات الرئيسية.

15
peak

يمكنك استخدام هذا الأمر البسيط لتحقيق النتيجة:

echo "{ \"foo\": \"lorem\", \"bar\": \"ipsum\" }"|python -m json.tool
14
Arpit Rathod

قم بتثبيت أدوات yajl بالأمر التالي:

Sudo apt-get install yajl-tools

ثم،

echo '{"foo": "lorem", "bar": "ipsum"}' | json_reformat

11
Uma sankar pradhan

yajl لطيف جدا ، في تجربتي. يمكنني استخدام أمر json_reformat الخاص به في طباعة ملفات .json بشكل جميل في vim عن طريق وضع السطر التالي في .vimrc:

autocmd FileType json setlocal equalprg=json_reformat
10
Hank Gay

إصدار PHP ، إذا كان لديك PHP> = 5.4.

alias prettify_json=php -E '$o = json_decode($argn); print json_encode($o, JSON_PRETTY_PRINT);'
echo '{"a":1,"b":2}' | prettify_json
9
svidgen

bat هو استنساخ cat مع تسليط الضوء على بناء الجملة:

مثال:

echo '{"bignum":1e1000}' | bat -p -l json

سيتم إخراج -p بدون رؤوس ، وسيحدد -l اللغة بشكل صريح.

إنه يحتوي على تلوين وتنسيق لـ JSON ويقوم لا به المشكلات المذكورة في هذا التعليق:كيف يمكنني طباعة JSON بشكل جميل في برنامج شل؟

9
Grav

استخدم روبي في سطر واحد:

echo '{"test":1,"test2":2}' | Ruby -e "require 'json'; puts JSON.pretty_generate(JSON.parse(STDIN.read))"

ويمكنك تعيين اسم مستعار لهذا:

alias to_j="Ruby -e \"require 'json';puts JSON.pretty_generate(JSON.parse(STDIN.read))\""

ثم يمكنك استخدامه بسهولة أكبر

echo '{"test":1,"test2":2}' | to_j

{
  "test": 1,
  "test2": 2
}

وإذا كنت تريد عرض JSON بالألوان ، فيمكنك تثبيت awesome_print ،

gem install awesome_print

ثم

alias to_j="Ruby -e \"require 'json';require 'awesome_print';ap JSON.parse(STDIN.read)\""

جربها!

echo '{"test":1,"test2":2, "arr":["aa","bb","cc"] }' | to_j

 Enter image description here

8
fangxing

أنا أستخدم httpie

$ pip install httpie

ويمكنك استخدامه مثل هذا

 $ http PUT localhost:8001/api/v1/ports/my 
 HTTP/1.1 200 OK
 Connection: keep-alive
 Content-Length: 93
 Content-Type: application/json
 Date: Fri, 06 Mar 2015 02:46:41 GMT
 Server: nginx/1.4.6 (Ubuntu)
 X-Powered-By: HHVM/3.5.1

 {
     "data": [], 
     "message": "Failed to manage ports in 'my'. Request body is empty", 
     "success": false
 }
8
slashmili

هنا حل روبي أفضل من أمر جسون للتجميل. جوهرة colorful_json جيدة إلى حد ما.

gem install colorful_json
echo '{"foo": "lorem", "bar": "ipsum"}' | cjson
{
  "foo": "lorem",
  "bar": "ipsum"
}
7
Pablo Fernandez heelhook

حلول J.F. Sebastian لم تنجح بالنسبة لي في Ubuntu 8.04.
هنا هو نسخة بيرل المعدلة التي تعمل مع مكتبة 1.X JSON الأقدم:

Perl -0007 -MJSON -ne 'print objToJson(jsonToObj($_, {allow_nonref=>1}), {pretty=>1}), "\n";'
7
pimlottc
$ Sudo apt-get install edit-json
$ prettify_json myfile.json
6
Bryan Larsen

الأداة ydump هي طابعة JSON جميلة:

$ ydump my_data.json
{
  "foo": "lorem",
  "bar": "ipsum"
}

أو يمكنك الأنابيب في JSON:

$ echo '{"foo": "lorem", "bar": "ipsum"}' | ydump
{
  "foo": "lorem",
  "bar": "ipsum"
}

ربما يكون هذا هو الحل الأقصر بصرف النظر عن استخدام أداة jq.

هذه الأداة جزء من مكتبة yojson لـ OCaml ، وهي موثقة هنا .

في دبيان ومشتقاته ، تحتوي الحزمة libyojson-ocaml-dev على هذه الأداة. بدلاً من ذلك ، يمكن تثبيت yojson عبر OPAM .

5
josch

هنا هو كيفية القيام بذلك مع رائع النصي.

قم بإنشاء برنامج نصي رائع ، دعنا نقول "طباعة جميلة"

#!/usr/bin/env groovy

import groovy.json.JsonOutput

System.in.withReader { println JsonOutput.prettyPrint(it.readLine()) }

اجعل البرنامج قابل للتنفيذ:

chmod +x pretty-print

الآن من سطر الأوامر ،

echo '{"foo": "lorem", "bar": "ipsum"}' | ./pretty-print
4
numan salati

هناك TidyJSON .

إنه C # ، لذلك ربما يمكنك الحصول عليه للترجمة مع Mono ، والعمل على * nix. لا توجد ضمانات رغم ذلك ، آسف.

4
Robert Gould

بالنسبة إلى Node.js ، يمكنك أيضًا استخدام الوحدة النمطية "util". ويستخدم تسليط الضوء على بناء الجملة ، المسافة البادئة الذكية ، ويزيل علامات الاقتباس من المفاتيح ويجعل فقط الإخراج كما يحصل.

cat file.json | node -e "process.stdin.pipe(new require('stream').Writable({write: chunk =>  {console.log(require('util').inspect(JSON.parse(chunk), {depth: null, colors: true}))}}))"
4
adius

سيبدو حل سطر واحد باستخدام Node.js كما يلي:

$ node -e "console.log( JSON.stringify( JSON.parse(require('fs').readFileSync(0) ), 0, 1 ))"

فمثلا:

$ cat test.json | node -e "console.log( JSON.stringify( JSON.parse(require('fs').readFileSync(0) ), 0, 1 ))"
3
harish2704

أنا مؤلف json-liner . إنها أداة لسطر الأوامر لتحويل JSON إلى تنسيق سهل grep. جربها.

$ echo '{"a": 1, "b": 2}' | json-liner
/%a 1
/%b 2
$ echo '["foo", "bar", "baz"]' | json-liner
/@0 foo
/@1 bar
/@2 baz
3
Wu Yongzheng

إذا كان لديك Node.js مثبتًا ، يمكنك إنشاء واحدة بمفردك باستخدام سطر واحد من التعليمات البرمجية. قم بإنشاء ملف جميل:

> هيم جميلة

#!/usr/bin/env node

console.log(JSON.stringify(JSON.parse(process.argv[2]), null, 2));

إضافة إذن التنفيذ:

> chmod + x جميلة

> ./pretty '{"foo": "lorem"، "bar": "ipsum"}'

أو إذا كان ملف JSON الخاص بك في ملف:

#!/usr/bin/env node

console.log(JSON.stringify(require("./" + process.argv[2]), null, 2));

>./تفسير file.json

3
Nikhil Ranjan

باستخدام JavaScript/Node.js: ألقِ نظرة على vkBeautify.js plugin ، والذي يوفر طباعة جميلة لكلا نص JSON و XML.

إنه مكتوب بلغة JavaScript بسيطة ، أقل من 1.5 كيلو بايت (مصغر) وسريع جدًا.

3
vadimk

هنا هو رائع بطانة واحدة:

echo '{"foo": "lorem", "bar": "ipsum"}' | groovy -e 'import groovy.json.*; println JsonOutput.prettyPrint(System.in.text)'
2
Orest Ivasiv

https://github.com/aidanmelen/json_pretty_print

from __future__ import unicode_literals
from __future__ import absolute_import
from __future__ import print_function
from __future__ import division

import json
import jsonschema

def _validate(data):
    schema = {"$schema": "http://json-schema.org/draft-04/schema#"}
    try:
        jsonschema.validate(data, schema,
                            format_checker=jsonschema.FormatChecker())
    except jsonschema.exceptions.ValidationError as ve:
        sys.stderr.write("Whoops, the data you provided does not seem to be " \
        "valid JSON.\n{}".format(ve))

def pprint(data, python_obj=False, **kwargs):
    _validate(data)
    kwargs["indent"] = kwargs.get("indent", 4)
    pretty_data = json.dumps(data, **kwargs)
    if python_obj:
        print(pretty_data)
    else:
       repls = (("u'",'"'),
                ("'",'"'),
                ("None",'null'),
                ("True",'true'),
                ("False",'false'))
    print(reduce(lambda a, kv: a.replace(*kv), repls, pretty_data))
2
Aidan Melen
gem install jsonpretty
echo '{"foo": "lorem", "bar": "ipsum"}' | jsonpretty

هذه الطريقة أيضًا " يكتشف استجابة HTTP/الرؤوس ، ويطبعها دون مساس ، ويتخطى إلى الجسم (للاستخدام مع` curl -i ') " .

2
lev

يمكنك استخدام smk :

echo '{"foo": "lorem", "bar": "ipsum"}' | smk -e"JSON.stringify(JSON.parse(data), null, 4)"

على سطر واحد

echo '{"foo": "lorem", "bar": "ipsum"}' | npx smk -e"JSON.stringify(JSON.parse(data), null, 4)"
0
Thilina Hasantha

إذا كنت لا تمانع في استخدام أداة تابعة لجهة خارجية ، يمكنك ببساطة حليقة إلى jsonprettyprint.org . هذا هو الحال بالنسبة للحالة التي لا يمكنك فيها تثبيت الحزم على الجهاز.

curl -XPOST https://jsonprettyprint.org/api -d '{"user" : 1}'
0
Yada
0
chronos

لم يتم تحليل ملفات JSON الخاصة بي بأي من هذه الطرق.

كانت مشكلتي مماثلة للنشرهل مصدر بيانات Google JSON غير صالح؟.

الجواب على هذا المنصب ساعدني في إيجاد حل.

يعتبر غير صالح JSON بدون مفاتيح السلسلة.

{id:'name',label:'Name',type:'string'}

لابد أن يكون:

{"id": "name", "label": "Name", "type": "string"}

يقدم هذا الرابط مقارنة شاملة لطيفة لبعض موزعي JSON المختلفين: http://deron.meranda.us/python/comparing_json_modules/basic

مما أدى بي إلى http://deron.meranda.us/python/demjson/ . أعتقد أن هذا المحلل اللغوي أكثر تسامحًا مع الأخطاء من الآخرين.

0
nelaaro

يمكنك استخدام Xidel .

Xidel هي أداة لسطر الأوامر لتنزيل واستخراج البيانات من صفحات HTML/XML أو JSON-APIs ، باستخدام قوالب CSS أو XPath 3.0 أو XQuery 3.0 أو JSONiq أو نقش. يمكنه أيضًا إنشاء مستندات XML/HTML/JSON جديدة أو محولة.

طباعة Xidel الجميلة افتراضيًا:

$ xidel -s - -e '$json' <<< '{"foo":"lorem","bar":"ipsum"}'
{
  "foo": "lorem",
  "bar": "ipsum"
}

أو:

$ echo '{"foo":"lorem","bar":"ipsum"}' | xidel -s - -e .
{
  "foo": "lorem",
  "bar": "ipsum"
}
0
Reino