SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite JSON_OBJECT()

SQLite json_object() function mengembalikan objek JSON yang terbentuk dengan baik berdasarkan argumennya.

Fungsi menerima nol atau lebih pasangan argumen dan mengembalikan objek JSON yang terbentuk dengan baik berdasarkan argumen tersebut.

Sintaks

json_object(label1,value1,...)

Dimana label1, value2, ... mewakili pasangan label/nilai.

Contoh

Berikut adalah contoh sederhana untuk ditunjukkan:

SELECT json_object( "name", "Igor", "age", 35 );

Hasil:

{"name":"Igor","age":35}

Meneruskan Objek JSON

Melewati argumen dengan tipe SQL TEXT menghasilkan string JSON yang dikutip, dengan label yang dikutip akan diloloskan:

SELECT json_object( "user", '{ "name" : "igor", "age" : 35 }' );

Hasil:

{"user":"{ \"name\" : \"igor\", \"age\" : 35 }"}

Jika kita tidak ingin hal ini terjadi, kita dapat menggunakan json() berfungsi untuk memberikan nilai sebagai dokumen JSON yang valid:

SELECT json_object( "user", json('{ "name" : "igor", "age" : 35 }') );

Hasil:

{"user":{"name":"igor","age":35}}

Cara lain untuk melakukannya adalah dengan menggunakan -> SQL SQLite operator:

SELECT json_object( "user", '{ "name" : "igor", "age" : 35 }' -> '$' );

Hasil:

{"user":{"name":"igor","age":35}}

Atau, kita dapat menggunakan json_object() lain fungsi:

SELECT json_object( "user", json_object( "name", "Igor", "age", 35 ) );

Hasil:

{"user":{"name":"Igor","age":35}}

Ini dia dengan beberapa nilai lainnya:

SELECT json_object( 
    "a", 1, 
    "user", json_object( "name", "Igor", "age", 35 ), 
    "b", 2 
    );

Hasil:

{"a":1,"user":{"name":"Igor","age":35},"b":2}

Meneruskan Array JSON

Hal serupa terjadi saat meneruskan array JSON:

SELECT json_object( "scores", '[ 9, 4, 7 ]' );

Hasil:

{"scores":"[ 9, 4, 7 ]"}

Dalam hal ini, nilainya adalah string yang menyerupai array.

Untuk mengembalikan array JSON yang sebenarnya, kita dapat meneruskan argumen kita ke json() fungsi:

SELECT json_object( "scores", json('[ 9, 4, 7 ]') );

Hasil:

{"scores":[9,4,7]}

Kita juga bisa menggunakan -> operator:

SELECT json_object( "scores", '[ 9, 4, 7 ]' -> '$' );

Hasil:

{"scores":[9,4,7]}

Atau, kita dapat meneruskan nilai ke json_array() fungsi:

SELECT json_object( "scores", json_array( 9, 4, 7 ) );

Hasil:

{"scores":[9,4,7]}

Ini dia dengan beberapa pasangan nama/nilai lainnya:

SELECT json_object( 
    "name", "Bruno", 
    "scores", json_array( 9, 4, 7 ), 
    "age", 25 
    );

Hasil:

{"name":"Bruno","scores":[9,4,7],"age":25}

Buat Objek Kosong

Memanggil json_object() tanpa melewatkan argumen apa pun menghasilkan objek kosong:

SELECT json_object();

Hasil:

{}

Label Duplikat

Pada saat penulisan, json_object() menerima label duplikat tanpa masalah. Oleh karena itu, kita dapat melakukan hal-hal seperti ini:

SELECT json_object( "b", 1, "b", 2 );

Hasil:

{"b":1,"b":2}

Tetapi dokumentasi SQLite menyarankan bahwa ini mungkin tidak selalu terjadi – versi SQLite yang akan datang mungkin tidak mendukung skenario seperti itu.

Contoh Basis Data

Kita dapat menggunakan json_object() saat mengambil data dari database.

Misalkan kita menjalankan kueri berikut:

SELECT * FROM Pets;

Hasil:

+-------+---------+--------+
| PetId | PetName | TypeId |
+-------+---------+--------+
| 1     | Homer   | 3      |
| 2     | Yelp    | 1      |
| 3     | Fluff   | 2      |
| 4     | Brush   | 4      |
+-------+---------+--------+

Kita bisa melihat ada tiga kolom, dan kita bisa melihat namanya.

Kita dapat menggunakan json_object() fungsi pada tabel itu seperti ini:

SELECT json_object( 
    'PetId', PetId, 
    'PetName', PetName,
    'TypeId', TypeId 
    )
FROM Pets;

Hasil:

{"PetId":1,"PetName":"Homer","TypeId":3}
{"PetId":2,"PetName":"Yelp","TypeId":1}
{"PetId":3,"PetName":"Fluff","TypeId":2}
{"PetId":4,"PetName":"Brush","TypeId":4}

Di sini, saya secara eksplisit menentukan nama label, lalu menggunakan kolom aktual dari database untuk nilainya. Setiap baris menjadi dokumen JSON, dan setiap kolom menjadi pasangan kunci/nilai dalam dokumen JSON tersebut.

Kita juga dapat menggunakan json_group_array() fungsi untuk membungkus dokumen dalam array:

SELECT json_group_array( 
        json_object(
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    )
FROM Pets;

Hasil:

[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana SQLite Char() Bekerja

  2. Data SQLite ke RecyclerView

  3. SQLite Kecuali

  4. SQLiteDatabase android IllegalStateException

  5. Wildcard Android SQLite