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関数はデフォルトで含まれています。