# JSON 函数

JSON 函数用于操作字符串类型的数据。

# JSONExtractString

解析 JSON 并提取字符串。如果值不存在或类型错误,则返回空字符串。该值是未转义的。如果转义失败,则返回空字符串。

JSONExtractString(json[, indices_or_keys])

示例

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

将值序列化为其 JSON 表示形式。支持各种数据类型和嵌套结构。默认情况下,64 位整数或更大的整数(如 UInt64Int128)将用引号括起来。特殊值 NaNinf 将被替换为 null。在序列化枚举值时,函数输出其名称。

toJSONString(value)

参数

  • value — 要序列化的值。值可以是任何数据类型。

返回值

  • 值的 JSON 表示形式。
  • 类型:String

示例

SELECT toJSONString(‘a:b’) = "a:b" 
SELECT toJSONString(123456) = 123456
SELECT toJSONString(0x64) = 100

# JSONExtractArrayRaw

返回一个数组,其中包含 JSON 数组的元素,每个元素表示为未解析的字符串。如果部分不存在或不是数组,则返回空数组。

JSONExtractArrayRaw(json[, indices_or_keys…])

示例

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' )
Last Updated: Wed Aug 07 2024 02:44:11 GMT+0000