[jq] fromjson で JSON 文字列をオブジェクトに変換する
作成日: 2026年10月26日
jq の fromjson を使用すると、JSON を表す文字列をパースして、オブジェクトなどの JSON の値に変換できます。JSON のプロパティに、別の JSON が文字列として格納されている場合などに利用できます。
下記の例では、payload プロパティに入っている JSON 文字列をオブジェクトに変換しています。
printf '%s\n' '{"id":1,"payload":"{\"name\":\"Taro\",\"score\":80}"}' |
jq '.payload | fromjson'
実行結果は下記のとおりです。
{
"name": "Taro",
"score": 80
}
.payload で取り出した値は、JSON の内容を持つ文字列です。fromjson でパースすると、name や score を持つオブジェクトとして扱えるようになります。
元のプロパティを変換する
更新演算子の |= を組み合わせると、他のプロパティを保持しながら、payload の値をオブジェクトに変換できます。
printf '%s\n' '{"id":1,"payload":"{\"name\":\"Taro\",\"score\":80}"}' |
jq '.payload |= fromjson'
実行結果は下記のとおりです。
{
"id": 1,
"payload": {
"name": "Taro",
"score": 80
}
}
fromjson に渡す文字列の内容は、有効な JSON である必要があります。不正な JSON が含まれている場合はエラーになります。