2019年12月21日これまでtrdsqlでは、JSONの入力が可能と書きましたが、例として書いたのは基本的にフラットな構造のJSONでした。2階層以上の階層構造が含まれるJSONはエラーになる訳ではなく、そのまま文字列として扱われます。以下のようなJSONがあるとします。}]これをそのままtrdsqlを実行すると以下のようになります(見やすいように-oatを付けています。CSV出力にすると「"」が含まれる文字列のためエスケープされて出力されます。|+-------+----------+-----------------------------------+このcodeは文字列の扱いですが、各データベースは既にJSONを扱える関数を備えているため、データベース側の関数を使って変更できます。MySQLSQLite3とMySQLではjson_extract()により$をルートとして(コマンドラインでは$が意味を持つので「\」でエスケープしてください)、指定した値を取得出来ます。codeの中の"hex"のみを表示するには以下のようにします。|+-------+----------+------+PostgreSQLPostgreSQLでは、json_extract_path_textを使用して、取得できます。PostgreSQLで取得する場合は、jsonやjsonbにキャストしてから関数を使用してください。|+-------+----------+------+また、PostgreSQLでは12からjsonb_path_query()でJSON_PATH指定で取得できます(返されるのは、textではなくJSONの値です)。|+-------+----------+--------+まとめデータベースのJSON関数はさらに多くの関数があり、JSON内のオブジェクトを編集できたりします。trdsqlでは、JSON出力時にJSONの列も文字列として扱うため、-ojsonでの出力とは相性がよくありません。その場合は、データベース側のJSON出力を有効に活用した方が意図通り出力できます。