sql >> データベース >  >> RDS >> SQLite

SQLiteの結果をJSONとしてフォーマットする

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


    1. SQL ServerでのOBJECTPROPERTYEX()のしくみ

    2. 集約とパーティショニング

    3. テーブル内の重複する行を削除する

    4. SQLServerでオブジェクトDIEを作成する