HIVE:使用get_json_object解析json对象

1 json对象

  1. JSON 对象使用在大括号 {…} 中书写。
  2. 对象可以包含多个 key/value(键/值)对。key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)
  3. key 和 value 中使用冒号 : 分割。
  4. 每个 key/value 对使用逗号 , 分割。
  5. 如果value为json类型,则表示嵌套对象。

2 get_json_object 语法

string get_json_object(json <json>, string <json_path>)
参数说明
json:必填,待处理的JSON数据,标准的JSON格式对象,格式为{Key:Value, Key:Value,...}
json_path:必填,需要返回的值的JSON路径。

返回值说明
返回STRING类型。

json_path 不同字符的含义如下:

  • $:表示根节点。

  • .或[‘’]:表示子节点。MaxCompute支持用这两种字符解析JSON对象,当JSON的Key本身包含.时,可以用[‘’]来替代。

  • []:[number]表示数组下标,从0开始。

3 获取指定字符串过程中的一些小坑

获取key1的对象为嵌套对象,可以使用.或[]获取,但是如果key包含.,则需要使用[]获取,否则解析的路径错误。
比如如下json字符串,在sql中使用str指代:

{
    "second": {
        "key1": "-999",
        "key2.1": "1"
    },
    "test.isfirst": "0"
}

不同解析语法获取的解析结果如下:

SELECT get_json_object(str,'$.second["key2.1"]'), -- 返回结果 “1”
       get_json_object(str,'$.second.key1'),  -- 返回结果 “-999”
       get_json_object(str,'$["test.isfirst"]'), -- 返回结果 “0”
       get_json_object(str,'$.test.isfirst') -- 返回结果 NULL

参考文档

  1. json对象
  2. https://help.aliyun.com/zh/maxcompute/user-guide/get-json-object
  3. https://stackoverflow.com/questions/63341060/how-do-you-escape-dot-in-dot-syntax-e-g-in-get-json-object

相关推荐

  1. HIVE使用get_json_object解析json对象

    2024-07-20 13:10:03       19 阅读
  2. Hive学习(14)json解析get_json_object()函数

    2024-07-20 13:10:03       54 阅读
  3. json解析之fastjson和jackson使用对比

    2024-07-20 13:10:03       50 阅读
  4. 使用 mapstructure 解析 json

    2024-07-20 13:10:03       33 阅读
  5. 使用 Newtonsoft.Json 将表单数据转换成对象

    2024-07-20 13:10:03       33 阅读
  6. 发送json 发送对象

    2024-07-20 13:10:03       22 阅读
  7. 爬虫系列实战:使用json解析天气数据

    2024-07-20 13:10:03       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 13:10:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 13:10:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 13:10:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 13:10:03       55 阅读

热门阅读

  1. Elasticsearch索引管理和生命周期管理

    2024-07-20 13:10:03       19 阅读
  2. 现代生活背景下陶瓷艺术设计的延伸与发展

    2024-07-20 13:10:03       20 阅读
  3. LeetCode 2956.找到两个数组中的公共元素:哈希表

    2024-07-20 13:10:03       19 阅读
  4. 麦芒30全新绽放,中国电信勾勒出AI手机的新方向

    2024-07-20 13:10:03       20 阅读
  5. Prometheus 运维中实际的故障案例以及解决办法

    2024-07-20 13:10:03       15 阅读
  6. Gmsh应用程序编程接口

    2024-07-20 13:10:03       13 阅读
  7. 【Go系列】RPC和grpc

    2024-07-20 13:10:03       16 阅读
  8. Spark SQL----INSERT OVERWRITE DIRECTORY

    2024-07-20 13:10:03       21 阅读