# JSON-Funktionen
JSON-Funktionen werden verwendet, um Daten vom Typ String zu manipulieren.
# JSONExtractString
Analysiert ein JSON und extrahiert einen String. Wenn der Wert nicht vorhanden ist oder einen falschen Typ hat, wird ein leerer String zurückgegeben. Der Wert wird unescaped. Wenn das Unescaping fehlgeschlagen ist, wird ein leerer String zurückgegeben.
JSONExtractString(json[, indices_or_keys]…)
Beispiele
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') = 'hello'
SELECT JSONExtractString('{"abc":"\\n\\u0000"}', 'abc') = '\n\0'
SELECT JSONExtractString('{"abc":"\\u263a"}', 'abc') = '☺'
SELECT JSONExtractString('{"abc":"\\u263"}', 'abc') = ''
SELECT JSONExtractString('{"abc":"hello}', 'abc') = ''
# toJSONString
Serialisiert einen Wert in seine JSON-Repräsentation. Verschiedene Datentypen und verschachtelte Strukturen werden unterstützt. 64-Bit-Integer oder größer (wie UInt64
oder Int128
) werden standardmäßig in Anführungszeichen eingeschlossen. Die Sonderwerte NaN
und inf
werden durch null
ersetzt. Beim Serialisieren eines Enum-Werts gibt die Funktion dessen Namen aus.
toJSONString(value)
Argumente
value
- Zu serialisierender Wert. Der Wert kann jeden Datentyp haben.
Rückgabewert
- JSON-Repräsentation des Werts.
- Typ: String
Beispiel
SELECT toJSONString(‘a:b’) = "a:b"
SELECT toJSONString(123456) = 123456
SELECT toJSONString(0x64) = 100
# JSONExtractArrayRaw
Gibt ein Array mit Elementen des JSON-Arrays zurück, wobei jedes Element als unanalysierter String dargestellt wird. Wenn der Teil nicht vorhanden ist oder kein Array ist, wird ein leeres Array zurückgegeben.
JSONExtractArrayRaw(json[, indices_or_keys…])
Beispiel
SELECT JSONExtractArrayRaw('{"a": "hello", "b": [-100, 200.0, "hello"]}', 'b') = ['-100', '200', '"hello"'];
INSERT INTO ChatArXivSELECT
abstract,
id,
vector,
metadata,
parseDateTimeBestEffort(JSONExtractString(toJSONString(metadata), 'pubdate')) AS pubdate,
JSONExtractString(toJSONString(metadata), 'title') AS title,
arrayMap(x->trim(BOTH '"' FROM x),
JSONExtractArrayRaw(toJSONString(metadata), 'categories')) AS categories,
arrayMap(x->trim(BOTH '"' FROM x),
JSONExtractArrayRaw(toJSONString(metadata), 'authors')) AS authors,
JSONExtractString(toJSONString(metadata), 'comment') AS comment,
JSONExtractString(toJSONString(metadata), 'primary_category') AS primary_category
FROM s3( 'https://myscale-demo.s3.ap-southeast-1.amazonaws.com/chat_arxiv/data.part*.zst', 'JSONEachRow', 'abstract String, id String, vector Array(Float32), metadata Object(''JSON'')', 'zstd' )