すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:JSONデータの解析と更新

最終更新日:Jun 02, 2026

シナリオ1:JSONオブジェクトの展開と抽出

parse-jsonjson_extract_scalar、またはjson_extract 関数を使用して、ログからJSONオブジェクトを展開および抽出します。

例1:JSONの第1レベルの展開

この例では、data フィールドの第1レベルのキーと値のペアを展開します。

  • 生ログ

    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:キーを指定した値の抽出

  • 生ログ

    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"}]}
    name: xh
    bar: baz
    foo_obj: {"bar": "baz"}

シナリオ2:JSONオブジェクトからの値の抽出

json_extract_scalar 関数を使用して、ログ内のJSONオブジェクトから値を抽出します。

例1:JSONオブジェクトに対象フィールドが含まれる場合

この例では、JSONオブジェクトから k1 キーの値を抽出し、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

シナリオ3: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"}

シナリオ4:値の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"}