2023年2月11日土曜日

SQLite3 引数を連結してJSON配列を作る(json_array())

概要

json_array関数を使用すると引数を連結してJSON形式の配列を作ることが出来る。 数値、文字列、null等を認識してくれるし、他のJSON関連の関数の返り値も使用出来る。

環境

  • Windows 10 64bit
  • SQLite3 (3.40.1) Command-Line Shell

実行例


sqlite> -- # 1.
sqlite> select json_array(1,2,3,4);
[1,2,3,4]

sqlite> -- # 2.
sqlite> select json_array('1',2,'3',4);
["1",2,"3",4]

sqlite> -- # 3.
sqlite> select json_array(1,null,3,4);
[1,null,3,4]

sqlite> -- # 4.
sqlite> select json_array(1,'[2,3]',4);
[1,"[2,3]",4]

sqlite> -- # 5.
sqlite> select json_array(1,[2,3],4);
Parse error: no such column: 2,3
  select json_array(1,[2,3],4);
                      ^--- error here
sqlite> -- # 6.
sqlite> select json_array(1,json('[2,3]'),4);
[1,[2,3],4]

sqlite> -- # 7.
sqlite> select json_array(1,'{"id":2}',3,4);
[1,"{\"id\":2}",3,4]

sqlite> -- # 8.
sqlite> select json_array(1,json('{"id":2}'),3,4);
[1,{"id":2},3,4]
                
  1. 引数をそのまま連結してJSON形式の配列を作る
  2. 文字列と数値を判別してJSON形式の配列を作る
  3. SQLiteのnullはJSONのnullとして判別される
  4. 文字列でJSON形式の配列を渡しても文字列として認識されるだけ
  5. 括弧を使ってそのまま渡すとエラーになる
  6. JSONとして認識してほしいのであればjson関数等を使用してJSONオブジェクトを渡す
  7. 連想配列も文字列とし渡しても文字列として認識されるだけ
    エスケープ処理は自動的にやってくれる。
  8. 連想配列もjson関数等を使用すればJSONオブジェクトとして認識させることが出来る

参考URL