跳到主要内容

提取JSON内容

提取Json文本中的信息

当前模块定义

sys:jsonExtract文本处理Action
标准模块
输入 8 · 输出 7

输入参数

  • 输入dataText必填

    要从中提取内容的Json文本或JToken对象

    填写 输入或变量
  • 提取路径0p0Text可选
    填写 固定输入
  • 提取路径1p1Text可选
    填写 固定输入
  • 提取路径2p2Text可选
    填写 固定输入
  • 提取路径3p3Text可选
    填写 固定输入
  • 提取路径4p4Text可选
    填写 固定输入
  • 日期时间按照文本处理dateAsStringBoolean可选

    保留原有数据格式

    填写 固定输入默认 false
  • 失败后停止stopIfFailBoolean可选

    失败后是否停止动作

    填写 固定输入默认 true

输出参数

  • 是否成功isSuccessBoolean

    操作是否没有异常

  • 值0v0Any

    提取到的内容,和提取路径对应

  • 值1v1Any

    提取到的内容,和提取路径对应

  • 值2v2Any

    提取到的内容,和提取路径对应

  • 值3v3Any

    提取到的内容,和提取路径对应

  • 值4v4Any

    提取到的内容,和提取路径对应

  • 根对象rootTokenObject

    整个输入内容解析后获得的JToken对象。可用于后续使用。

用于从JSON格式的数据中提取需要的值。

json是一种轻量级的数据交换格式。通常用于网络数据交换或配置文件存储等场景。

本模块使用Json.Net组件的 JToken.SelectToken 和 JToken.SelectTokens 方法实现。深入使用请参考此组件的相关文档。

提取JSON内容

提取Json文本中的信息
输入
 
要从中提取内容的Json文本或JToken对象
提取路径0
 
提取路径1
 
提取路径2
 
提取路径3
 
提取路径4
 
是否成功
-- 选择变量 --
操作是否没有异常
值0
-- 选择变量 --
提取到的内容,和提取路径对应
值1
-- 选择变量 --
提取到的内容,和提取路径对应
值2
-- 选择变量 --
提取到的内容,和提取路径对应
值3
-- 选择变量 --
提取到的内容,和提取路径对应
值4
-- 选择变量 --
提取到的内容,和提取路径对应
根对象
-- 选择变量 --
整个输入内容解析后获得的JToken对象。可用于后续使用。
步骤注释
 

参数

输入

【输入】要提取信息的json数据 或 JToken对象。

【提取路径n】一次可以提取5项信息,对每一项指定要提取的JsonPath。

Quicker在内部将先使用JToken.SelectToken()方法提取单个值的内容,失败时尝试使用JToken.SelectTokens()方法提取列表类型的内容。

(1.30.14+) 对于明确需要提取数组/列表类型的结果的情况,可以在路径上增加前缀list:强制使用数组方式提取。

路径参数的格式

格式1:使用“属性.子属性[序号].子子属性”的层级式路径。如:

  • Manufacturers[0].Name
  • Manufacturers[0].Products[0].Price
  • Manufacturers[1].Products[0].Name

格式2:使用JSONPath。

输出

【值n】根据路径n所提取到的内容。请确保输出的内容与变量类型兼容。

【根对象】输入的所有内容解析后生成JToken对象。当需要提取更多的内容时,可以将此对象输出到变量,然后使用更多的Json提取模块提取内容,也可以在表达式中使用JToken对象提取内容。

说明

高级

表达式替代用法

通过JsonConvert.DeserializeObject({JSON字符串})这个函数可以将字符串转化为Jtoken,然后通过{JToken}["path1"]["path2"]即可获取内容。

JToken说明

JToken对象使用方法

示例

示例动作:https://getquicker.net/Sharedaction?code=05d33931-477a-4c18-a917-08d7b30d7779

json数据:

{ 'Stores': [ 'Lambton Quay', 'Willis Street' ], 'Manufacturers': [ { 'Name': 'Acme Co', 'Products': [ { 'Name': 'Anvil', 'Price': 50 } ] }, { 'Name': 'Contoso', 'Products': [ { 'Name': 'Elbow Grease', 'Price': 99.95 }, { 'Name': 'Headlight Fluid', 'Price': 4 } ] } ], 'City': 'BeiJing', 'Dot.Name': 'Hello' }

要提取的内容路径
CityCity文本:
Beijig
StoresStores列表:
'Lambton Quay',
   'Willis Street'
第一个Manufacturer的NameManufacturers[0].Name文本:
Acme Co
所有Products的name列表$..Products[*].Name列表:
'Anvil'
'Elbow Grease'
'Headlight Fluid'
所有Manufacture对象的列表Manufacturers对象列表,可以使用“每个”模块循环处理每一项。
Dot.Name的值(Key含有点)['Dot.Name']Hello

更新历史

  • 1.4.18 当提取的数据为复杂类型时,返回原始JToken对象。

参考资料

更新于