2016-05-02 20 views
2

出力が解析JSONデータ

a=1 
b=2 
c=3 

ようにする必要があり

[ 
    { 
    "Name" : "a", 
    "Value" : "1" 
    }, 
    { 
    "Name" : "b", 
    "Value" : "2" 
    }, 
    { 
    "Name" : "c", 
    "Value" : "3" 
    } 
] 

これは私が試したものですが、それは与えていません期待される結果:

jq '.[].Value' file.txt 
+0

「jq」で何を試しましたか?あなたはおそらく非常に近いです! – fedorqui

+0

JQ。[]。名前は または JQをFILE.TXT。[]。これは、一度に、valyeをキーに印刷され 値はfile.txtはなく、UNIXツールと構文解析JSON [の –

+0

可能な複製をキーに値を割り当てる方法](http://stackoverflow.com/questions/1955505/parsing-json-with-unix-tools) – redoc

答えて

0

これはそれをしない

python3 -c 'import json; print("\n".join(["{}={}".format(x["Value"], x["Name"]) for x in json.load(open("file.json"))]))' 

結果jqを使用して

a=1 
b=2 
c=3 
+0

Pythonの解決策はここでは十分ではないでしょう。彼は具体的にはjqソリューションを探していました。 –

2

jq 'map({(.Name):.Value})|add|.//={}' < data.json 

が生成されます

{ 
    "a": "1", 
    "b": "2", 
    "c": "3" 
} 

あなたはjqバージョン1.5以降を使用している場合は、代わりにfrom_entriesを使用することができます。

3

は、次のjqコマンドを使用することができます。

jq -r '.[]|[.Name,.Value]|join("=")' file.json 

出力:あなたは2つのだけの値をプリントアウトしているので

a=1 
b=2 
c=3 
+0

この答えは、期待される出力をよりよく表しますが、私の答えは、json形式が他の修正によって保存が必要な場合に役立つかもしれません。あなたの答えに私のものをコピーして、包括的なソリューションを提供してください(私は私のものを削除します)。 – bishop

+0

ありがとうございます。 –

+1

@bishop私はあなたの意見を見ますが、私はそれを簡単に保ちましょう。このような場合には、読者にはあなたの答えがあります。 – hek2mgl

5

、それだけで直接文字列をプリントアウトする方が簡単かもしれません。

$ jq -r '.[] | "\(.Name)=\(.Value)"' file.txt 
+0

私のリストを使って試してみて、それから参加するほうがいいです。 jqを使って文字列補間が可能な場合、この種のことはまったく分かりませんでした。 – hek2mgl

+1

また、 '... | .Name + "=" + .Value' –

関連する問題