首页 > 其他分享 >JSON端口操作实例

JSON端口操作实例

时间:2022-12-01 17:14:38浏览次数:64  
标签:XML 元素 端口 Json 明细 JSON 实例

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

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

edi

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

一、“根元素名称”设置

edi

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

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

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

edi

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

edi

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

edi

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

edi

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

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

edi

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

edi

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

三、设置Json字段类型

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

edi

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

edi

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

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

标签:XML,元素,端口,Json,明细,JSON,实例
From: https://www.cnblogs.com/edi-ka/p/16942012.html

相关文章

  • xml 转 json
    https://www.cnblogs.com/ZXdeveloper/p/16500959.htmlhttp://t.zoukankan.com/javalinux-p-14021005.html......
  • [Json] GSON 数据容错
    GSONGSON是Googel公司开发的用于解析json的类库。可以很轻松地让程序员将java对象转换成JSON格式,或者将JSON格式的对象转换成Java对象。GSON的github地址:https://github.......
  • Go实现整合 Logrus 输出json格式日志
    学习与交流:Go语言技术微信群商务合作加微信:LetsFenggoland全家桶激活码,支持所有版本,支持所有系统链接:http://web.52shizhan.cn/activity/s2abxc提取码:GJF9B1DK 现......
  • 实战 | OpenCV+OCR实现环形文字识别实例(详细步骤 + 代码)
    导读本文将介绍使用OpenCV+OCR实现环形文字识别的详细步骤和代码演示。(来源公众号:OpenCV与AI深度学习) 背景介绍  光学字符识别(OCR)场景中有很多特殊情况,比如噪声、......
  • java XML对象互转 注解实例
    javaJAXB@XmlAttribute@XmlElement@XmlValue实例@XmlAttribute 用法@Data@XmlAccessorType(XmlAccessType.FIELD)publicstaticclassCouponOther{@XmlEle......
  • js获取内(外)网真实IP地址(WebRTC)及内网端口扫描
    摘要:使用的属性来发送数据内容接受的地址接受内网的参数接受内网开放端口的参数如果想获取真实的外网,请把下一行改为遍历内网及端口,这里只写了端口,多个端口,速度将会的非常......
  • 大数据学习6之分布式日志收集框架Flume——Flume实战应用之从指定的网络端口采集数据
    从指定的网络端口采集数据输出到控制台进入官网,查看文档,settingupanagent,看到asimpleexample使用Flume的关键就是写flume的agent配置文件1.配置source2.配置channel......
  • 数据库编程——MongoDB json
    在学习数据库编程总结了笔记,并分享出来。有问题请及时联系博主:​​Alliswell_WP​​,转载请注明出处。09-数据库编程day05(mongodbjson)目录:一、学习目标二、复习三、作业四......
  • Class实例对应着运行时类
    packageday2;importorg.junit.Test;publicclassClassDemo1{//程序经过javac.exe生成.class字节码文件//用java.exe解释运行某个字节码文件,相当于将其加载到内存中......
  • UAC实例分析-USB音响
     在AndroidUSB之复合设备(gadget)详解一篇中提到了USBGadgetUAC(USBAudioClass)的使用。Rockchip平台可以支持UAC1(兼容USBAudioClassspecification1.0)和UAC2(......