赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 数据加工
  6. 数据加工(旧版)
  7. 最佳实践
  8. 文本解析
  9. 解析与更新JSON数据

解析与更新JSON数据

  • 文本解析
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文介绍如何使用数据加工对包含JSON对象的日志进行解析与更新。

场景一:展开和提取JSON对象

日志中包含JSON对象时,您可以通过e_json函数展开和提取对象。

示例1:展开一层JSON

例如,展开data字段值中的第一层键值对。

  • 原始日志

    data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}
  • 加工规则

    e_json("data", depth=1)
  • 加工结果

    data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}
    k1: v1
    k2: {"k3": "v3", "k4": "v4"}

示例2:完全展开JSON对象

例如,完全展开data字段值中的各层键值对。

  • 原始日志

    data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}
  • 加工规则

    e_json("data")
  • 加工结果

    data:{"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}
    k1:v1
    k3:v3
    k4:v4

示例3:指定字段名精确提取JSON对象值

指定JSON对象中的键名,精确提取目标键值对。

  • 原始日志

    data: {
    	"foo": {
        	"bar": "baz"
        },
        "peoples": [{
            "name": "xh",
            "sex": "girl"
        }, {
            "name": "xm",
            "sex": "boy"
        }]
    }
  • 加工规则

    e_json("data", jmes="foo", output="foo")
    e_json("data", jmes="foo.bar", output="bar")
    e_json("data", jmes="peoples[0].name", output="name")
    e_json("data", jmes="peoples[*].name", output="names")
  • 加工结果

    data:{"foo": {"bar": "baz"}, "peoples": [{"name": "xh", "sex": "girl"}, {"name": "xm", "sex": "boy"}]}
    foo:{"bar": "baz"}
    bar:baz
    name:xh
    names:["xh", "xm"]

场景二:提取JSON对象值

日志中包含JSON对象时,您可以通过dct_get函数提取JSON对象值。

示例1:JSON对象包含目标字段

例如,提取JSON对象中的键值对"k1":"v1",并将键名更改为key1。

  • 原始日志

    data: {"k1":"v1","k2":"v2"}
  • 加工规则

    e_set("key1", dct_get(v("data"), "k1"))
  • 加工结果

    data:{"k1": "v1", "k2": "v2"}
    key1:v1

示例2:JSON对象不包含目标字段

例如,提取JSON对象中的键值对,当目标键不存在时,新增一个键key3,并使用默认值为其赋值。

  • 原始日志

    data: {"k1":"v1","k2":"v2"}
  • 加工规则

    e_set("key3", dct_get(v("data"), "k3", default="default"))
  • 加工结果

    data:{"k1": "v1", "k2": "v2"}
    key3:default

场景三:更新JSON对象值

日志中包含JSON对象时,您可以通过dct_update函数更新JSON对象值。

示例1:修改JSON对象值

例如,修改JSON对象中k1的值。

  • 原始日志

    data: {"k1":"v1","k2":"v2"}
  • 加工规则

    e_set("data", dct_update(v("data"), {"k1": "new_k1"}))
  • 加工结果

    data:{"k1": "new_k1", "k2": "v2"}

示例2:为JSON对象增加键值对

例如,在JSON对象中新增键值对"k3": "k3"。

  • 原始日志

    data: {"k1":"v1","k2":"v2"}
  • 加工规则

    e_set("data", dct_update(v("data"), {"k3": "k3"}))
  • 加工结果

    data:{"k1": "v1", "k2": "v2", "k3": "k3"}

场景四:删除JSON对象值

日志中包含JSON对象时,您可以通过dct_delete函数删除JSON对象值。

例如,删除JSON对象中的键值对"k1":"v1"、"k2":"v2"。

  • 原始日志

    data: {"k1":"v1","k2":"v2", "k3": "v3"}
  • 加工规则

    e_set("data", dct_delete(v("data"), "k1", "k2"))
  • 加工结果

    data:{"k3": "v3"}

场景五:将值解析为JSON对象

您可以使用json_parse函数将字符串解析为JSON对象。

例如,data字段值为字符串,您可以将其转换为JSON对象。

  • 原始日志

    data: "pre{ \"k1\": \"v1\", \"k2\": \"v2\"}"
  • 加工规则

    e_set("json_object", json_parse(op_slice(v("data"), 3, 28)))
  • 加工结果

    data:pre{ "k1": "v1", "k2": "v2"}
    json_object:{"k1": "v1", "k2": "v2"}
相关文章

解析Syslog标准格式数据 2025-04-22 10:54

Syslog是一种行业标准的协议,可用来记录设备的日志。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。本文档介绍如何使用SLS DSL中的GROK函数高效快捷地解析不同格式的Syslog日志。 概况

解析Nginx日志 2025-04-22 10:54

Nginx访问日志记录了用户访问的详细信息,解析Nginx访问日志对业务运维具有重要意义。本文介绍如何使用正则表达式函数或GROK函数解析Nginx访问日志。 解析方案简介

解析Java报错日志 2025-04-22 10:54

在大数据、高并发场景下的Java应用中,通过有效方式分析Java报错日志并提供运维指导,能有效减轻产品运营维护成本。日志服务支持采集各云产品的Java报错日志,通过数据加工解析Java错误日志。 前提条件 已采集各SLS、OSS、SLB、RDS的Java错误

提取字符串动态键值对 2025-04-22 10:54

本文档介绍如何使用不同方案提取字符串键值对。 常用方案比较 字符串动态键值对提取分为关键字提取、值提取、关键字加工和值加工,常用方案

特定格式文本数据加工 2025-04-22 10:54

文档中的实践案例主要是根据实际工作中的工单需求产生。本文档将从工单需求,加工编排等方面介绍如何使用LOG DSL编排解决任务需求。 非标准JSON对象转JSON对象并展开

解析CSV格式日志 2025-04-22 10:54

本文档介绍在解析Syslog或者其他文本格式时,针对数据中以特殊字符分隔的格式如何进行解析。 正常形式的CSV格式日志

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号