前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSON端口操作实例

JSON端口操作实例

原创
作者头像
知行软件EDI
发布2022-12-01 17:06:30
1.5K0
发布2022-12-01 17:06:30
举报
文章被收录于专栏:EDI技术知识EDI技术知识

JSON 端口可直接实现在 JSON 和 XML 之间进行转换。端口会自动检测输入文件是 JSON 还是 XML,然后将文件在两种格式间相互转换。

该端口较多的是运用在API接口调用集成方案的项目当中,我们以百思买项目为例,知行之桥将接收到的百思买的EDI报文首先映射为XML格式文件,最后再通过JSON端口转换为Json;用户给百思买发送数据时,也会将JSON格式数据推送至固定目录下,知行之桥经过一系列的转换,生成EDI报文之后发送给百思买。

edi
edi

通常情况下,Json端口可以直接使用,无需其他配置即可满足用户基本要求。但也会有一些需要特殊设置的场景,这里举几个例子以及在知行之桥中的操作示例,我们一起来看看吧。

一、“根元素名称”设置
edi
edi

在Json端口的设置页面,“根元素名称”栏目可设置指定的根元素,默认设置为Items。

(1)当XML转Json时,该设置判断是否保留根元素,可进行两种配置:

一种是使用默认设置Items,Json端口会将输入XML中的根元素保留下来,并且将其作为转出Json的根节点,此时,左图的输入XML会转为右图的输出Json:

edi
edi

另一种是配置“根元素名称”为输入XML的根元素,输出的Json将不会保留原始根元素。比如,若设置“根元素名称”为poHeader(输入XML的根元素),此时转出的Json如右图:

edi
edi

(2)当Json转XML时,转出的XML会以设置的“根元素名称”作为根节点。使用默认设置Items时,左图的输入Json转出的XML如右图所示,输出XML的根元素为Items:

edi
edi

除了默认设置Items,也可自定义根元素,输出的XML会以此定义作为根元素。比如,当自定义设置为PO时,如下图所示,输出XML的根元素为PO:

edi
edi
二、设置单个数组节点也带有数组符号

XML转JSON时,若只有一行明细,此时JSON端口转出的Json文件中,单行明细以JSON对象输出,但是很多时候用户需求是只要是明细行,无论是单行明细还是多行明细,都应该以JSON数组格式输出。这就需要在JSON端口输入的XML文件中,在明细行处标明属性json:array,以及其值为true。具体的设置是这样的,以此工作流为例,在JSON端口前一般都连有XML MAP端口,该端口进行的操作是将指定格式的XML文件,映射为符合用户具体需求的XML文件。我们需要在XML MAP端口中的目标XML中,找到明细元素,添加属性@json:array=true。

edi
edi

这样转出的XML文件的明细元素就是包含属性json:array=true,再经过JSON端口转换出的JSON文件中也带有[]了。

edi
edi

此示例中为明细元素poDetail以及其中嵌套的poSubDetail数组都加上了[]。

三、设置Json字段类型

XML转JSON时,默认情况下,转换得到的JSON中,所有的数据类型都是字符串类型。但有些项目中,需要设置具体字段为用户指定的数据类型,具体操作与刚刚演示的操作类似。可以在JSON端口前连接的XML MAP端口的目标XML中,找到具体字段,右键选择为其添加属性,属性为json:type,值为想要的数据类型,这里我们示例number类型。

edi
edi

这一步转出的XML经过JSON端口转换得到的Json文件中,对应字段就会变为指定的number类型了。

edi
edi

除了number类型,还有以下多种类型可以转换:

json:type=int json:type=integer json:type=boolean json:type=bool json:type=object json:type=null

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、“根元素名称”设置
  • 二、设置单个数组节点也带有数组符号
  • 三、设置Json字段类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档