[jq] tojson でオブジェクトを JSON 文字列に変換する

作成日: 2026年10月27日

jq の tojson を使用すると、オブジェクトや配列などの JSON の値を、JSON を表す文字列に変換できます。別の JSON のプロパティに、オブジェクトの内容を文字列として格納したい場合などに利用できます。

下記の例では、name と score を持つオブジェクトを JSON 文字列に変換しています。

printf '%s\n' '{"name":"Taro","score":80}' | jq 'tojson'

実行結果は下記のとおりです。

"{\"name\":\"Taro\",\"score\":80}"

tojson の結果は文字列です。そのため、jq の通常の JSON 出力では全体がダブルクォートで囲まれ、文字列内のダブルクォートはエスケープされます。

JSON のプロパティに格納する

変換した文字列をプロパティに設定することもできます。下記の例では、入力オブジェクトを文字列に変換し、新しいオブジェクトの payload に格納しています。

printf '%s\n' '{"name":"Taro","score":80}' | jq '{payload: tojson}'

実行結果は下記のとおりです。

{
  "payload": "{\"name\":\"Taro\",\"score\":80}"
}

この例の payload は、オブジェクトの内容を表す文字列です。文字列をオブジェクトに戻したい場合は、fromjson を使用できます。

参考

jq