SQLiteコマンドラインインターフェースを使用すると、クエリ結果をJSONドキュメントとして出力できます。
これはjson
で実行できます 出力モード。
json_object()
のようなSQLite関数を使用することもできます および/またはjson_array()
クエリ結果をJSONドキュメントとして返します。
JSON出力モード
次のように出力モードを変更できます:
.mode json
それで全部です。
クエリを実行すると、結果がJSONドキュメントとして出力されます。
SELECT * FROM Pets;
結果:
[{"PetId":1,"PetName":"Homer","TypeId":3}, {"PetId":2,"PetName":"Yelp","TypeId":1}, {"PetId":3,"PetName":"Fluff","TypeId":2}, {"PetId":4,"PetName":"Brush","TypeId":4}]
明確にするために、ここではテーブルモードになっています:
.mode table
クエリを実行します:
SELECT * FROM Pets;
結果:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
json出力モードは、2020年8月14日にリリースされたSQLite3.33.0で導入されたことに注意してください。
以前のバージョンのSQLiteを使用している場合、上記の例は機能しません。これを機能させるには、新しいバージョンにアップグレードする必要があります。
または、JSON関数を使用してジョブを実行することもできます(JSON関数が有効になっていることを前提としています)。
JSON関数
もう1つの方法は、1つ以上のJSON関数をクエリに組み込んで、JSONドキュメントを返すようにすることです。
まず、出力モードをlist
に設定しましょう :
.mode list
次に、json_group_array()
を使用するクエリを実行してみましょう。 およびjson_object()
クエリ結果をJSONドキュメントで返すには:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
結果:
[{"PetId":1,"PetName":"Homer","TypeId":3}, {"PetId":2,"PetName":"Yelp","TypeId":1}, {"PetId":3,"PetName":"Fluff","TypeId":2}, {"PetId":4,"PetName":"Brush","TypeId":4}]
ここでは、各行をJSONオブジェクトとして出力し、すべてをJSON配列でラップしています。
json_group_array()
は省略できます 各オブジェクトを独自に返す関数:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
結果:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
これらの例は、JSON関数が有効になっていることを前提としています。 SQLite 3.38.0以降を使用している場合、これらはデフォルトで有効になっている必要があります(SQLiteのコンパイル時に明示的に無効にされていない場合)。
SQLiteバージョン3.38.0(2022年2月22日にリリース)より前は、SQLITE_ENABLE_JSON1
を使用してSQLiteをコンパイルする必要がありました。 ビルドにJSON関数を含めるためのオプション。ただし、SQLiteバージョン3.38.0以降、JSON関数はデフォルトで含まれています。