[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 が含まれている場合はエラーになります。

参考

jq