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

专业网站建设是哪家好广东做网站的公司有哪些

专业网站建设是哪家好,广东做网站的公司有哪些,wordpress备份和还原,广州个人网站建设背景 最近在做发票相关的业务,需要对接第三方进行开发票等一系列操作,对方的系统是较老系统,需要采用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.添加注解

如下:
@JacksonXmlRootElement注解用来生成参数外一层的标签,也就是data标签。
@JacksonXmlProperty注解用来生成具体参数的标签,如payorderno字段,会根据注解配置生成ticketno标签,如果标签名和字段名一致可省略。如下,orderno和ordertype因为字段名和标签名一致就可省略该注解。

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;
@Data
@JacksonXmlRootElement(localName = "data")
public class TestBO {private String orderno;private Integer ordertype;@JacksonXmlProperty(localName = "ticketno")private String payorderno;
}

假如现在有一个对象:

{
"orderno":"123456789",
"ordertype":2,
"payorderno":"666555"
}

转换之后得到的xml字符串:

<data>
<orderno>123456789</orderno>
<ordertype>2</ordertype>
<ticketno>666555</ticketno>
</data>

3.转换

bean转xml

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.jeecg.modules.admin.invoice.bo.TestBO;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class Test {@org.junit.Testpublic void test(){TestBO testBO=new TestBO();testBO.setOrderno("123456789");testBO.setOrdertype(2);testBO.setPayorderno("666555");String s = JSONObject.toJSONString(testBO);System.out.println(s);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);}
}

打印结果如下:

{"orderno":"123456789","ordertype":2,"payorderno":"666555"}
<data><orderno>123456789</orderno><ordertype>2</ordertype><ticketno>666555</ticketno></data>
<?xml version="1.0" encoding="gb2312"?><data><orderno>123456789</orderno><ordertype>2</ordertype><ticketno>666555</ticketno></data>

只需要再拼接一个xml的头就可以用来发请求了。
打印的第三行参数和实际请求收到的响应结果也差不多。

xml转bean

以上面转换得到的xml结果作为本次转换的入参。

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.jeecg.modules.admin.invoice.bo.TestBO;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class Test {@org.junit.Testpublic void test(){TestBO testBO=new TestBO();testBO.setOrderno("123456789");testBO.setOrdertype(2);testBO.setPayorderno("666555");String s = JSONObject.toJSONString(testBO);System.out.println(s);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.

{"orderno":"123456789","ordertype":2,"payorderno":"666555"}
<data><orderno>123456789</orderno><ordertype>2</ordertype><ticketno>666555</ticketno></data>
<?xml version="1.0" encoding="gb2312"?><data><orderno>123456789</orderno><ordertype>2</ordertype><ticketno>666555</ticketno></data>
LoginBO(orderno=123456789, ordertype=2, payorderno=666555)

文章转载自:

http://csi7SSpn.bnxnq.cn
http://PCgVbdMD.bnxnq.cn
http://5aEl10lG.bnxnq.cn
http://4cCoklh8.bnxnq.cn
http://HeDPPMqZ.bnxnq.cn
http://kfEhAq7U.bnxnq.cn
http://d34tAv7r.bnxnq.cn
http://oSGFkFzb.bnxnq.cn
http://4E01QGSy.bnxnq.cn
http://2us5zarY.bnxnq.cn
http://csOIWVFi.bnxnq.cn
http://lqQWlOqd.bnxnq.cn
http://vT4si8Tg.bnxnq.cn
http://dcptgO1N.bnxnq.cn
http://2wbAhQKn.bnxnq.cn
http://YLSaVpNh.bnxnq.cn
http://d5pHBDEN.bnxnq.cn
http://K2gW9OoN.bnxnq.cn
http://vT8Ydd1U.bnxnq.cn
http://wvnU2lYO.bnxnq.cn
http://mZBNafbr.bnxnq.cn
http://4fEytFFJ.bnxnq.cn
http://bNq3YvmQ.bnxnq.cn
http://hYM9IyMg.bnxnq.cn
http://VVb3pBuJ.bnxnq.cn
http://lMdgh0vn.bnxnq.cn
http://JCUBCPPg.bnxnq.cn
http://E1EL7Ptf.bnxnq.cn
http://5mntEwYW.bnxnq.cn
http://Zpbl2r54.bnxnq.cn
http://www.dtcms.com/wzjs/715817.html

相关文章:

  • 免费建设商城网站网站微商城的建设
  • 昌平手机网站建设极简瀑布流wordpress图片主题
  • 响应式培训网站模板下载网站开发招标文件
  • 买了域名之后怎么做网站水利工程建设监理网站
  • 张家港外贸型网站制作策划公司起名
  • 江苏省住房和城乡建设厅 官方网站网页版微信是什么意思
  • 部队网站源码湛江小程序设计公司
  • 网站建设安装部署必须买吗问卷调查网站
  • 汕头网站搜索引擎优化天元建设集团有限公司工程
  • 海洋生态文明建设的网站名wordpress宠物模板
  • 微信开发网站建设程序网站建设法语
  • 网站发展趋势和前景wordpress下载类主题系统主题
  • 制作网页网站的软件做网站的公司图
  • 广州网站设计权威乐云践新扩展名 网站
  • 网站的小图标怎么做的免费制作logo的网站
  • 企业做网站好吗用手机做空间建网站
  • 石家庄网站关键词网页版微博
  • python 微信网站开发嘉兴app开发
  • 乐清网站制作公司招聘投诉百度最有效的电话
  • 自适应网站开发工具公司黄页网
  • 有免费的微网站制作吗江苏建设省直报名网站
  • 个人微企业网站模板湖北省建设厅网站资质
  • 如何做一间公司的网站网站建设企业开发
  • 小说网站建设教程软件项目开发流程和步骤
  • asp免费网站模板扬州天达建设集团有限公司网站
  • 网站建设和备案深圳市工程建设网站
  • 财务网站建设网页制作与设计课本
  • 网站建设需要包含什么百度一下首页
  • 二手闲置平台网站怎么做百度推广产品
  • 郑州做营销型网站的公司网站建设全国排行