跳至內容
Astera Technology

JSON 物件匯出為何變成字串清單?

合計時把已核物件文字明列 JSON 值。

下載完整個案資料及參考答案 ↓

準備報表輸入

本例合法物件片段以 TEXT 存。普通文字交 json_group_array,每段會變 JSON 字串;json(fragment) 才提供 JSON 值,按 id 產生物件陣列。

以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。

假設輸入:fragments
編號物件文字
1{"name":"A"}
2{"name":"B"}
下載可編輯 CSV ↓
完整建表及插入假設資料
CREATE TABLE fragments(id INTEGER PRIMARY KEY,fragment TEXT NOT NULL CHECK(json_valid(fragment) AND json_type(fragment)='object')); INSERT INTO fragments VALUES(1,'{"name":"A"}'),(2,'{"name":"B"}');

比較錯誤及更正結果

錯誤 SELECT:重現問題
SELECT json_group_array(fragment ORDER BY id) AS objects FROM fragments;
錯誤查詢的逐行結果
物件陣列 JSON
["{\"name\":\"A\"}","{\"name\":\"B\"}"]
下載可編輯 CSV ↓
更正 SELECT
SELECT json_group_array(json(fragment) ORDER BY id) AS objects FROM fragments;
更正查詢的逐行結果
物件陣列 JSON
[{"name":"A"},{"name":"B"}]
下載可編輯 CSV ↓

錯陣列每項要再解析一次,更正已含 A、B 物件。表限制每段輸入均為合法物件。

用新副本測邊界

加第三個 {} 物件,匯出仍保留空物件項。

另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。

邊界改動及更正查詢
INSERT INTO fragments VALUES(3,'{}');
SELECT json_group_array(json(fragment) ORDER BY id) AS objects FROM fragments;
邊界查詢的逐行結果
物件陣列 JSON
[{"name":"A"},{"name":"B"},{}]
下載可編輯 CSV ↓

更正匯出會丟空物件嗎?

查看參考答案

不會,邊界陣列有 A、B、{},都是物件而非被引號包的物件文字。

相關資源

系統整合服務 →