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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本文档介绍对于包含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日志并进行多维度分析。
相关文章
|
13天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
128 83
|
1天前
|
人工智能 运维 监控
一招高效解析 Access Log,轻松应对泼天流量
一招高效解析 Access Log,轻松应对泼天流量
|
2月前
|
存储 搜索推荐 大数据
数据大爆炸:解析大数据的起源及其对未来的启示
数据大爆炸:解析大数据的起源及其对未来的启示
127 15
数据大爆炸:解析大数据的起源及其对未来的启示
|
21天前
|
数据采集 前端开发 API
SurfGen爬虫:解析HTML与提取关键数据
SurfGen爬虫:解析HTML与提取关键数据
|
26天前
|
数据采集 监控 搜索推荐
深度解析淘宝商品详情API接口:解锁电商数据新维度,驱动业务增长
淘宝商品详情API接口,是淘宝开放平台为第三方开发者提供的一套用于获取淘宝、天猫等电商平台商品详细信息的应用程序接口。该接口涵盖了商品的基本信息(如标题、价格、图片)、属性参数、库存状况、销量评价、物流信息等,是电商企业实现商品管理、市场分析、营销策略制定等功能的得力助手。
|
21天前
|
XML JSON Java
Java中Log级别和解析
日志级别定义了日志信息的重要程度,从低到高依次为:TRACE(详细调试)、DEBUG(开发调试)、INFO(一般信息)、WARN(潜在问题)、ERROR(错误信息)和FATAL(严重错误)。开发人员可根据需要设置不同的日志级别,以控制日志输出量,避免影响性能或干扰问题排查。日志框架如Log4j 2由Logger、Appender和Layout组成,通过配置文件指定日志级别、输出目标和格式。
|
5天前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
5天前
|
JSON JavaScript 前端开发
处理从API返回的JSON数据时返回Unicode编码字符串怎么处理
在处理API返回的JSON数据时,遇到类似`\u7f51\u7edc\u8fde\u63a5\u9519\u8bef`的Unicode编码字符串,可使用JavaScript内置方法转换为可读文字。主要方法包括:1. 使用`JSON.parse`自动解析;2. 使用`decodeURIComponent`和`escape`组合解码;3. 在API调用中直接处理响应数据。这些方法能有效处理多语言内容,确保正确显示非ASCII字符。
|
10天前
|
JSON API 数据格式
淘宝商品评论数据API接口详解及JSON示例返回
淘宝商品评论数据API接口是淘宝开放平台提供的一项服务,旨在帮助开发者通过编程方式获取淘宝商品的评论数据。这些数据包括评论内容、评论时间、评论者信息、评分等,对于电商分析、用户行为研究、竞品分析等领域都具有极高的价值。
|
12天前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
18 0

热门文章

最新文章

推荐镜像

更多