当前位置: 首页 > news >正文

外贸客服网站源码未来网络营销的发展趋势

外贸客服网站源码,未来网络营销的发展趋势,深圳外贸招聘,ps网站首页设计图制作教程背景 最近在做发票相关的业务,需要对接第三方进行开发票等一系列操作,对方的系统是较老系统,需要采用XML的请求方式。 思路 一般来说,基于springboot的项目采用的都是JSON格式的请求参数和响应参数,因此需要做一个转…

背景

最近在做发票相关的业务,需要对接第三方进行开发票等一系列操作,对方的系统是较老系统,需要采用XML的请求方式。

思路

一般来说,基于springboot的项目采用的都是JSON格式的请求参数和响应参数,因此需要做一个转换。
从格式上,XML格式的数据,是一个XML头后面是各种标签存放数据。例如data标签代表数据,orderno标签代表订单编号字段。

<?xml version="1.0" encoding="utf-8"?>
<data><orderno>123456789</orderno><ordertype>2</ordertype><ticketno>666555</ticketno>
</data>

手动拼接

这是最容易想到的方式,因为格式相对固定,字段不多的请求下直接手动拼接就好了。

jackson框架

jackson-dataformat-xml框架提供了bean转xml和xml转bean的能力,并且使用简单,省去了繁琐的拼接操作。

springboot集成jackson-dataformat-xml

1.引入依赖

需要注意,如果项目已经引入过jackson依赖,在引入jackson-dataformat-xml依赖的时候需要保持依赖版本一致,可以通过在依赖管理搜jackson来查看版本。如果版本一致还是报错,考虑使用更高版本。

        <dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.11.3</version></dependency>

2.添加注解

如下:(设置标签名都是设置localName字段)
@JacksonXmlRootElement注解用来生成参数外一层的标签,也就是data标签,只有当对象是根对象的时候才生效,也就是最外层对象,如果作为某个对象的属性,则不生效。
@JacksonXmlProperty注解用来生成具体参数的标签,如payorderno字段,会根据注解配置生成ticketno标签,如果标签名和字段名一致可省略。如下,orderno、ordertype都因为字段名和标签名一致可省略该注解。
注意:如果标签名首字母是大写的,在定义字段的时候就必须用@JacksonXmlProperty注解指定。

如果内部是其他对象的引用,也把它当成一个字段即可,通过加@JacksonXmlProperty注解来设置对象引用的标签名。
如果内部是一个list,则需要加@JacksonXmlElementWrapper注解,来设置list标签的名称。@JacksonXmlProperty来设置list内部对象的标签。

//内部对象,本例子中insideData不生效
@Data
@JacksonXmlRootElement(localName = "insideData")
public class InsideBO {private String level;
}//list存的对象,listData也不生效
@Data
@JacksonXmlRootElement(localName = "listData")
public class ListBO {private String name;private Integer age;
}import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;
import java.util.List;
@Data
@JacksonXmlRootElement(localName = "data")
public class TestBO {private String orderno;private Integer ordertype;@JacksonXmlProperty(localName = "ticketno")private String payorderno;/*** 指定该对象引用的标签为testInsideBO3,把它也当成普通字段即可*/private InsideBO testInsideBO1;@JacksonXmlProperty(localName = "testInsideBO3")private InsideBO testInsideBO2;/*** 不指定list和内部对象的标签,默认都使用字段名*/private List<ListBO> listBOS1;/*** 指定list的标签为listBOS3,内部对象的标签为listdetail*/@JacksonXmlElementWrapper(localName = "listBOS3")@JacksonXmlProperty(localName = "listdetail")private List<ListBO> listBOS2;}

3.转换

bean转xml


import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.List;@SpringBootTest
public class Test {@org.junit.jupiter.api.Testpublic void test(){TestBO testBO=new TestBO();testBO.setOrderno("123456789");testBO.setOrdertype(2);testBO.setPayorderno("666555");List<ListBO> list=new ArrayList<>();ListBO listBO=new ListBO();listBO.setName("list");listBO.setAge(18);list.add(listBO);testBO.setListBOS1(list);testBO.setListBOS2(list);InsideBO insideBO=new InsideBO();insideBO.setLevel("100");testBO.setTestInsideBO1(insideBO);testBO.setTestInsideBO2(insideBO);XmlMapper xmlMapper=new XmlMapper();String s1 = null;try {s1 = xmlMapper.writeValueAsString(testBO);} catch (JsonProcessingException e) {e.printStackTrace();}System.out.println(s1);}
}

打印结果如下:

<data>
<orderno>123456789</orderno>
<ordertype>2</ordertype>
<ticketno>666555</ticketno>
<testInsideBO1><level>100</level>
</testInsideBO1>
<testInsideBO3><level>100</level>
</testInsideBO3>
<listBOS1><listBOS1><name>list</name><age>18</age></listBOS1>
</listBOS1><listBOS3><listdetail><name>list</name><age>18</age>/listdetail>
</listBOS3>
</data>

只需要再拼接一个xml的头就可以用来发请求了。

xml转bean

以上面转换得到的xml结果作为本次转换的入参。加上xml头更符合响应的xml

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.List;@SpringBootTest
public class Test {@org.junit.jupiter.api.Testpublic void test(){TestBO testBO=new TestBO();testBO.setOrderno("123456789");testBO.setOrdertype(2);testBO.setPayorderno("666555");List<ListBO> list=new ArrayList<>();ListBO listBO=new ListBO();listBO.setName("list");listBO.setAge(18);list.add(listBO);testBO.setListBOS1(list);testBO.setListBOS2(list);InsideBO insideBO=new InsideBO();insideBO.setLevel("100");testBO.setTestInsideBO1(insideBO);testBO.setTestInsideBO2(insideBO);XmlMapper xmlMapper=new XmlMapper();String s1 = null;try {s1 = xmlMapper.writeValueAsString(testBO);} catch (JsonProcessingException e) {e.printStackTrace();}System.out.println(s1);s1="<?xml version=\"1.0\" encoding=\"gb2312\"?>"+s1;System.out.println(s1);TestBO testBO1 = null;try {testBO1 = xmlMapper.readValue(s1, TestBO.class);} catch (JsonProcessingException e) {e.printStackTrace();}System.out.println(testBO1);}
}

打印结果如下:
成功将xml参数转换成bean.

TestBO(orderno=123456789,ordertype=2, payorderno=666555,testInsideBO1=InsideBO(level=100),testInsideBO2=InsideBO(level=100),listBOS1=[ListBO(name=list, age=18)],listBOS2=[ListBO(name=list, age=18)])
http://www.shuangfujiaoyu.com/news/30386.html

相关文章:

  • phpweb手机网站程序百度短链接在线生成
  • ups国际快递网站建设模块分析seo网站推广实例
  • 如何刷网站流量简述网络营销的特点
  • 我的网站被黑了谷歌浏览器官方app下载
  • 12306网站开发成本百度网页版网址
  • 佛山哪有网站建设公司今天的病毒感染情况
  • 怎样创建网站发招聘信息百度网盘登录首页
  • 哈尔滨整站百度秒收录软件工具
  • 做网站有软件吗营销策划的六个步骤
  • 网站建设名字怎么创建网站平台
  • 高端型网站制作小程序开发文档
  • 网站建设滚动条怎么插入太原seo推广
  • 鸟人 网站建设唐山公司做网站
  • 做视频投稿赚钱的网站好河北网站seo策划
  • 养老院网站开发背景中国十大软件外包公司
  • 网站软文伪原创游戏推广
  • ppt模板免费下载素材图片重庆百度推广排名优化
  • 四川建设网和四川省公共资源交易信息网什么是sem和seo
  • 免费传奇网站免费传奇营销网络推广哪家好
  • 石家庄做网站的公司有哪些东莞seo网站制作报价
  • 网站免费推广方式外链收录网站
  • 常州建设局下属网站中国联通腾讯
  • 厦门企业建网站制作郑州seo地址
  • 邢台网站制作公司seo任务平台
  • 网站哪个公司好百度知道官网入口
  • 数字货币交易网站开发怎么做宝鸡seo排名
  • 公司网站功能性建设有哪些百度下载安装最新版
  • 网站建设坂田网络营销方式对比分析
  • 好设计购物网站网站排名怎么做
  • 门户网站模板源码怎么让自己上百度