私はjq
を取得して、次のようなJSON構造を解析しようとしています:
{
"a" : 1,
"b" : 2,
"c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n"
}
つまり、JSONの要素はエスケープされたjsonを含む文字列です。
だから、$ jq [.c] myFile.json | jq [.id]
の線に沿って何かがあります
しかし、それはjq: error: Cannot index string with string
でクラッシュします
これは、.cの出力がJSONではなく文字列であるためです。 jqにこの文字列を解析させるにはどうすればよいですか?
私の最初の解決策は、sedを使用してすべてのエスケープ文字(\":\"
、\",\"
、および\"
)を置き換えることですが、それは面倒です、jq
にはこの?
ありがとう!
編集:また、ここで入手できるjqバージョンは次のとおりです。
$ jq --version
jq version 1.3
必要に応じて更新できると思います。
文字をエスケープしない生の出力(-r)を使用できます。
jq -r .c myfile.json | jq .id
補遺:これには、jq 1.3以降で動作するという利点があります。実際、-rオプションがあるjqのすべてのバージョンで動作するはずです。