/ / JSON文字列を解析し、Pythonを使ってLinux上で印刷するにはどうすればよいですか? - python、json、linux

JSON文字列を解析し、Pythonを使ってLinux上で印刷するにはどうすればよいですか? - python、json、linux

これはかなり基本的な質問ですが、私はPythonを全く知らないので、皆さんに尋ねます。

LinuxコマンドでJSON文字列を解析したい using Python。 私が印刷したいのは、 id JSON文字列の列は "ok".

例えば、

extected(1) - > id == okの場合
$ echo "{"id": "ok", "name": "b"}" | python -c "import json,sys; `blah blah blah....."

{"id": "ok", "name": "b"}
extected(2) - > if id!= ok
$ echo "{"id": "no", "name": "a"}" | python -c "import json,sys; `blah blah blah....."
(empty)

私はこの問題を解決するために多くの試みを試みましたが、すべてが失敗しました..

echo "{"id":"ok", "name": "a"}" | python -c "import json,sys; d=sys.stdin; obj=json.load(d); print (d if obj["id"] == "ok" else "")"
<open file "<stdin>", mode "r" at 0x7fb6391060c0>

だから私は可変 d 値ではなくオブジェクトです。だから私は read().

echo "{"id":"ok", "name": "a"}" | python -c "import json,sys; d=sys.stdin; obj=json.load(d); print (d.read() if obj["id"] == "ok" else "")"
(empty)

何も印刷されていない理由を理解していません。

私を助けてください。

回答:

回答№1は1

あなたは正しいと思う d オブジェクトである。読み込まれたものを出力する必要があります。 json.parse 代わりに:

echo "{"id":"ok", "name": "a"}" | python -c "import json,sys; d=sys.stdin; obj=json.load(d); print (obj if obj["id"] == "ok" else "")"

出力を標準のJSON構文で変更したい場合 objjson.dumps(obj).

2つ目の解決策がうまくいかない理由は、 json.parse すでにstdinからすべての内容を読み込み read() ストリームの位置をリセットしません(これはstdinでは開始できません)。