tencent cloud

文档反馈

嵌套 JSON 的处理

最后更新时间:2024-01-20 17:59:06

    场景描述

    小王将日志以 JSON 格式采集到日志服务(Cloud Log Service,CLS)。JSON 是多层嵌套,小王想提取 userApp 字段。其中 user 是二级嵌套字段。

    原始日志

    [
    {
    "content": {
    "App": "App-1",
    "start_time": "2021-10-14T02:15:08.221",
    "resonsebody": {
    "method": "GET",
    "user": "Tom"
    },
    "response_code_details": "3000",
    "bytes_sent": 69
    }
    },
    {
    "content": {
    "App": "App-2",
    "start_time": "2222-10-14T02:15:08.221",
    "resonsebody": {
    "method": "POST",
    "user": "Jerry"
    },
    "response_code_details": "2222",
    "bytes_sent": 1
    }
    }
    ]

    DSL 加工函数

    方法一:不展开所有的 KV,使用 jmes 公式直接提取字段。
    ext_json_jmes("content", jmes="resonsebody.user", output="user")
    ext_json_jmes("content", jmes="App", output="App")
    方法二:平铺所有的 KV,丢弃不需要的字段。
    ext_json("content")
    fields_drop("content")
    fields_drop("bytes_sent","method","response_code_details","start_time")

    DSL 加工函数详解

    方法一:
    1. 使用 jmes 公式 resonsebody.user,直接指定二级嵌套的 user 字段。
    ext_json_jmes("content", jmes="resonsebody.user", output="user")
    2. 使用 jmes 公式 App,直接指定 App 字段。
    ext_json_jmes("content", jmes="App", output="App")
    方法二:
    1. 使用 ext_json 函数从 JSON 数据中提取结构化数据,默认会平铺所有的字段。
    ext_json("content")
    2. 丢弃 content 字段。
    fields_drop("content")
    3. 丢弃不需要的字段 bytes_sent,method,response_code_details,start_time
    fields_drop("bytes_sent","method","response_code_details","start_time")

    加工结果

    [{"App":"App-1","user":"Tom"},
    {"App":"App-2","user":"Jerry"}]
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持