全部產品
Search
文件中心

Simple Log Service:解析與更新JSON資料

更新時間:May 30, 2026

情境一:展開和提取JSON對象

日誌中包含JSON對象時,您可以通過parse-jsonjson_extract_scalar 或者json_extract函數展開和提取對象。

樣本1:展開一層JSON

例如,展開data欄位值中的第一層索引值對。

  • 原始日誌

    data: {"k1": "v1", "k2": {"k3": "v3", "k4": "v4"}}
  • spl 語句

    * | parse-json data
  • 加工結果

    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"}}
  • spl 語句

    * | parse-json data 
      | extend 
          k3 = json_extract_scalar(k2, '$.k3'),
          k4 = json_extract_scalar(k2, '$.k4')
      | project k1, k3, k4,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"
        }]
    }
  • spl 語句

    * | extend 
        name = json_extract_scalar(data, '$.peoples[0].name'),
        bar = json_extract_scalar(data, '$.foo.bar'),
        foo_obj = json_extract(data, '$.foo')
  • 加工結果

    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對象時,您可以通過json_extract_scalar函數提取JSON對象值。

樣本1:JSON對象包含目標欄位

例如,提取JSON對象中的索引值對"k1":"v1",並將鍵名更改為key1

  • 原始日誌

    data: {"k1":"v1","k2":"v2"}
  • spl 語句

    * | extend key1 = json_extract_scalar(data, '$.k1')
  • 加工結果

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

樣本2:JSON對象不包含目標欄位

例如,提取JSON對象中的索引值對,當目標鍵不存在時,新增一個鍵key3,並使用預設值為其賦值。

  • 原始日誌

    data: {"k1":"v1","k2":"v2"}
  • spl 語句

    * | extend key3 = coalesce(json_extract_scalar(data, '$.k3'), 'default')
  • 加工結果

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

情境三:更新JSON對象值

日誌中包含JSON對象時,您可以通過replace函數更新JSON對象值。

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

  • 原始日誌

    data: {"k1":"v1","k2":"v2"}
  • spl 語句

    * | extend data = replace(data, '"k1":"v1"', '"k1":"new_k1"') 
  • 加工結果

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

情境四、將值解析為JSON對象

您可以使用json_parse函數將字串解析為JSON對象。

例如,data欄位值為字串,您可以將其轉換為JSON對象。

  • 原始日誌

    data: "pre{ \"k1\": \"v1\", \"k2\": \"v2\"}"
  • spl 語句

    * | extend json_object = replace(data, 'pre', '')
    | extend json_object=json_parse(json_object) 
  • 加工結果

    data:pre{ "k1": "v1", "k2": "v2"}
    json_object:{"k1": "v1", "k2": "v2"}