オブジェクト内にjsonの文字列を含むjsonファイルがあります。
{
"requestType": "POST",
"response": {
"size": 78,
"text": "{\"recordID\":123, \"title\":\"Hello World\", \"content\":\"Lorem ipsum...\"}"
}
}
Jsonコマンドラインインターペッター jq を使用して、.response.text
文字列の内容をjsonとして挿入する必要があります。
このコマンドを実行すると:
jq '.response.text | @json'
出力:"\"{\\\"recordID\\\":123, \\\"title\\\":\\\"Hello World\\\", \\\"content\\\":\\\"Lorem ipsum...\\\"}\""
Jsonの代わりに奇妙なエスケープされたjson文字列を取得します。これは.response.text | @json | .recordID
のようなものからアクセスできます。
@json
関数はjsonを取得し、jsonエスケープ文字列を出力するため、別の方法が必要ですが、@text
は何もしないようです。
エスケープされたjsonの文字列を実際のjsonに変換する方法はありますか?jq '.response.text | @json | .title'
などのコマンドを使用して解析し、この出力を取得します:"Hello World"
?
fromjson
を使用します。
文字列を適切なJSON値に解析します。 tojson
(および@json
)は逆に、json値を取得して文字列に変換します。
だからあなたはこれを行うことができます:
.response.text | fromjson.title