# Funciones JSON
Las funciones JSON se utilizan para manipular datos de tipo cadena.
# JSONExtractString
Analiza un JSON y extrae una cadena. Si el valor no existe o tiene un tipo incorrecto, se devolverá una cadena vacía. El valor no está escapado. Si el desescapado falla, devuelve una cadena vacía.
JSONExtractString(json[, indices_or_keys]…)
Ejemplos
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
Serializa un valor a su representación JSON. Se admiten varios tipos de datos y estructuras anidadas. Los enteros de 64 bits o más grandes (como UInt64
o Int128
) se encierran entre comillas por defecto. Los valores especiales NaN
e inf
se reemplazan por null
. Al serializar un valor Enum, la función muestra su nombre.
toJSONString(value)
Argumentos
value
- Valor a serializar. El valor puede ser de cualquier tipo de dato.
Valor devuelto
- Representación JSON del valor.
- Tipo: Cadena
Ejemplo
SELECT toJSONString(‘a:b’) = "a:b"
SELECT toJSONString(123456) = 123456
SELECT toJSONString(0x64) = 100
# JSONExtractArrayRaw
Devuelve un array con elementos del array JSON, cada uno representado como una cadena sin analizar. Si la parte no existe o no es un array, se devolverá un array vacío.
JSONExtractArrayRaw(json[, indices_or_keys…])
Ejemplo
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' )