SLS数据加工对Json数据解析与更新

简介: 本文档介绍对于包含Json格式字段的日志如何进行解析。## 场景一:Json对象展开与提取日志中包含Json对象,通过e_json进行字段展开与对象提取**示例1: Json一层展开*** 原始日志```data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}```* 加工规则```pythone_json("data", de

本文档介绍对于包含Json格式字段的日志如何进行解析。

场景一:Json对象展开与提取

日志中包含Json对象,通过e_json进行字段展开与对象提取

示例1: Json一层展开

  • 原始日志
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: {"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对象

  • 原始日志
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对象包含目标字段

  • 原始日志
data: {"k1":"v1","k2":"v2"}
  • 加工规则
e_set("key1", dct_get(v("data"), "k1"))
  • 加工结果
data:{"k1": "v1", "k2": "v2"}
key1:v1

示例2: Json对象不包含目标字段,设置默认值

  • 原始日志
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对象字段值

  • 原始日志
data: {"k1":"v1","k2":"v2"}
  • 加工规则
e_set("data", dct_update(v("data"), {"k1": "new_k1"}))
  • 加工结果
data:{"k1": "new_k1", "k2": "v2"}

示例2: 为Json对象增加字段

  • 原始日志
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对象字段

示例1:

  • 原始日志
data: {"k1":"v1","k2":"v2", "k3": "v3"}
  • 加工规则
e_set("data", dct_delete(v("data"), "k1", "k2"))
  • 加工结果
data:{"k3": "v3"}

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

示例1: 将字符串解析为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"}
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
21 0
|
29天前
|
JSON JavaScript 前端开发
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
264 0
|
6天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
10 0
|
6天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
37 0
|
12天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
28 0
|
15天前
|
存储 JSON 数据挖掘
python逐行读取txt文本中的json数据,并进行处理
Python代码示例演示了如何读取txt文件中的JSON数据并处理。首先,逐行打开文件,然后使用`json.loads()`解析每一行。接着,处理JSON数据,如打印特定字段`name`。异常处理包括捕获`JSONDecodeError`和`KeyError`,确保数据有效性和字段完整性。将`data.txt`替换为实际文件路径运行示例。
12 2
|
29天前
|
JSON JavaScript 数据格式
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
【深入探究C++ JSON库】解析JSON元素的层级管理与遍历手段
87 2
|
30天前
|
XML JSON API
深入解析C++ JSON库:nlohmann::json:: parse的内部机制与应用
深入解析C++ JSON库:nlohmann::json:: parse的内部机制与应用
48 0
|
1月前
|
JSON 数据格式
糊涂工具类(hutool)post请求设置body参数为json数据
糊涂工具类(hutool)post请求设置body参数为json数据
40 1
|
1月前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
154 0

推荐镜像

更多