一、应用背景
日常开发中有很多地方需要对JSON数据进行解析。本文主要讲解通过达观RPA的自定义脚本、可视化控件等方式来解析JSON数据。
二、数据准备与知识
(一)数据准备
本文使用到的JSON数据如下,它可以使存放在文本文件中的字符串,也可以是通过http请求获取的文本。
{"version":"1.0.2","result":{"pages":6,"data":[{"name":"张三","IDcard":"350583199201015688","address":"福建省泉州市南安市万达广场1楼2301号","version":"90.11.11.110"},{"name":"李四","IDcard":"350521198807317456","address":"福建省泉州市惠安县中骏世界城2楼1314号","version":"78.11.11.110"}]}}
(二)知识准备
因为达观RPA的程序脚本主要使用的是Python语言编写,下面介绍下Python中JSON数据是如何解析的。后续在介绍自定义脚本处理json会用到。
1.python中json数据处理功能放置在json模块中,可以通过以下代码导入程序中:
Import json
2.主要使用到的功能有4个:
Json.dumps(python对象):将python对象转换成json字符串;
Json.loads(json字符串):将内存中json字符串转换成python对象;
Json.dump(文件对象):将python中的对象转换成json存储到文件中;
Json.load(文件对象):将文件中的json格式转换成python对象。
注意:这里的dumps单词比dump多了个s,可以理解成string,loads和load类似。对于json文件的转换可以参考以下代码:
import json
with open('united_states.json') as f:
data = json.load(f)
3.python对象与json的转换关系
上述所讲python对象,一般指的是python中List列表和dictionary字典对象。具体转换如下图:
(1)将JSON字符串转换为Python对象
JSON | Python |
object | dict |
array | list |
string | str |
number (integer) | int |
number (real) | float |
true | True |
false | False |
null | None |
(2)将Python对象转换为JSON字符串
Python | JSON |
dict | object |
list,tuple | array |
str | string |
int,float,int | number |
True | true |
False | false |
None | null |
4.达观RPA中可视化控件的转换主要是将JSON字符串转换成字典对象。
如果是转换成字典对象,可利用字典操作获取key和value值。如:
dictname['keyname']['keyname']
三、达观RPA的实现
(一)可视化控件的实现
在读取JSON字符串后,在控件区-->数据处理-->Json中将“json转换成字典”拖放到编辑区中。
再找到控件区-->数据处理-->字典操作中的“获取字典内容”控件,拖放到编辑区中,并设置属性区中的“要操作的字典”为上面拖放的“json转换成字典”,"字典key值"设置为需要获取的key名称。
通过快捷键ctrl+k可以查看生成的代码:_rpa_xxxx_any=_rpa_xxxx_map_any.get('result')
如果需要读取result下一层中data,需要再拖放一个“获取字典内容”,并设置key值为data
(二)自定义脚本的实现
在控件区-->基本命令中找到“自定义脚本”拖放到编辑区中。打开属性区中编写脚本如下:
Import json
Json_obj=json.loads(json_123)
Json_data=json_obj['result']['data']
这里需要设置传入给脚本的变量和输出给后续控件使用的变量,如下图配置。
其中json_123主要是接收来自脚本外部的变量;
Json_456、json_789主要用于返回给后续控件使用,后续控件只要选择即可,如体现的变量名为:
自定义脚本-json库解析['json_456']