JSON端口操作实例
JSON 端口可直接实现在 JSON 和 XML 之间进行转换。端口会自动检测输入文件是 JSON 还是 XML,然后将文件在两种格式间相互转换。
该端口较多的是运用在API接口调用集成方案的项目当中,我们以百思买项目为例,知行之桥将接收到的百思买的EDI报文首先映射为XML格式文件,最后再通过JSON端口转换为Json;用户给百思买发送数据时,也会将JSON格式数据推送至固定目录下,知行之桥经过一系列的转换,生成EDI报文之后发送给百思买。
通常情况下,Json端口可以直接使用,无需其他配置即可满足用户基本要求。但也会有一些需要特殊设置的场景,这里举几个例子以及在知行之桥中的操作示例,我们一起来看看吧。
一、“根元素名称”设置
在Json端口的设置页面,“根元素名称”栏目可设置指定的根元素,默认设置为Items。
(1)当XML转Json时,该设置判断是否保留根元素,可进行两种配置:
一种是使用默认设置Items,Json端口会将输入XML中的根元素保留下来,并且将其作为转出Json的根节点,此时,左图的输入XML会转为右图的输出Json:
另一种是配置“根元素名称”为输入XML的根元素,输出的Json将不会保留原始根元素。比如,若设置“根元素名称”为poHeader(输入XML的根元素),此时转出的Json如右图:
(2)当Json转XML时,转出的XML会以设置的“根元素名称”作为根节点。使用默认设置Items时,左图的输入Json转出的XML如右图所示,输出XML的根元素为Items:
除了默认设置Items,也可自定义根元素,输出的XML会以此定义作为根元素。比如,当自定义设置为PO时,如下图所示,输出XML的根元素为PO:
二、设置单个数组节点也带有数组符号
XML转JSON时,若只有一行明细,此时JSON端口转出的Json文件中,单行明细以JSON对象输出,但是很多时候用户需求是只要是明细行,无论是单行明细还是多行明细,都应该以JSON数组格式输出。这就需要在JSON端口输入的XML文件中,在明细行处标明属性json:array,以及其值为true。具体的设置是这样的,以此工作流为例,在JSON端口前一般都连有XML MAP端口,该端口进行的操作是将指定格式的XML文件,映射为符合用户具体需求的XML文件。我们需要在XML MAP端口中的目标XML中,找到明细元素,添加属性@json:array=true。
这样转出的XML文件的明细元素就是包含属性json:array=true,再经过JSON端口转换出的JSON文件中也带有[]了。
此示例中为明细元素poDetail以及其中嵌套的poSubDetail数组都加上了[]。
三、设置Json字段类型
XML转JSON时,默认情况下,转换得到的JSON中,所有的数据类型都是字符串类型。但有些项目中,需要设置具体字段为用户指定的数据类型,具体操作与刚刚演示的操作类似。可以在JSON端口前连接的XML MAP端口的目标XML中,找到具体字段,右键选择为其添加属性,属性为json:type,值为想要的数据类型,这里我们示例number类型。
这一步转出的XML经过JSON端口转换得到的Json文件中,对应字段就会变为指定的number类型了。
除了number类型,还有以下多种类型可以转换:
json:type=int
json:type=integer
json:type=boolean
json:type=bool
json:type=object
json:type=null