github.com/GuanceCloud/cliutils@v1.1.21/pipeline/ptinput/funcs/md/gjson.md (about)

     1  ### `gjson()` {#fn-gjson}
     2  
     3  函数原型:`fn gjson(input, json_path: str, newkey: str)`
     4  
     5  函数说明:提取 JSON 中的指定字段,可将其命名成新的字段,并保证按原始顺序排列
     6  
     7  参数:
     8  
     9  - `input`: 待提取 JSON,可以是原始文本(`_`)或经过初次提取之后的某个 `key`
    10  - `json_path`: JSON 路径信息
    11  - `newkey`:提取后数据写入新 key
    12  
    13  ```python
    14  # 直接提取原始输入 JSON 中的 x.y 字段,并可将其命名成新字段 abc
    15  gjson(_, "x.y", "abc")
    16  
    17  # 已提取出的某个 `key`,对其再提取一次 `x.y`,提取后字段名为 `x.y`
    18  gjson(key, "x.y") 
    19  
    20  # 提取数组,`key` 和 `abc` 均为数组类型
    21  gjson(key, "1.abc.2")
    22  ```
    23  
    24  示例一:
    25  
    26  ```python
    27  # 待处理数据:
    28  # {"info": {"age": 17, "name": "zhangsan", "height": 180}}
    29  
    30  # 处理脚本:
    31  gjson(_, "info", "zhangsan")
    32  gjson(zhangsan, "name")
    33  gjson(zhangsan, "age", "age")
    34  
    35  # 处理结果:
    36  {
    37    "age": 17,
    38    "message": "{\"info\": {\"age\": 17, \"name\": \"zhangsan\", \"height\": 180}}",
    39    "name": "zhangsan",
    40    "zhangsan": "{\"age\":17,\"height\":180,\"name\":\"zhangsan\"}"
    41  }
    42  ```
    43  
    44  示例二:
    45  
    46  ```python
    47  # 待处理数据:
    48  #    data = {
    49  #        "name": {"first": "Tom", "last": "Anderson"},
    50  #        "age":37,
    51  #        "children": ["Sara","Alex","Jack"],
    52  #        "fav.movie": "Deer Hunter",
    53  #        "friends": [
    54  #            {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
    55  #            {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
    56  #            {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
    57  #        ]
    58  #    }
    59  
    60  # 处理脚本:
    61  gjson(_, "name")
    62  gjson(name, "first")
    63  ```
    64  
    65  示例三:
    66  
    67  ```python
    68  # 待处理数据:
    69  #    [
    70  #            {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
    71  #            {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
    72  #            {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
    73  #    ]
    74      
    75  # 处理脚本,json 数组处理:
    76  gjson(_, "0.nets.1")
    77  ```