首先先讲json和对象之间的互相转换,因为这个比较简单。

首先引入依赖

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.47</version>

</dependency>

然后可以调用依赖里的方法

JSON.parseObject(str, ApprovalVo.class)是json字符串转化为java实体类; JSON.toJSONString(ApprovalVo)是把实体类转化成json字符串

str就是json字符串,ApprovalVo是实体类,如果这个实体类里面还包含了对象或者数组之类的也不用换方法,外面大的转了的话里面小的可以当作正常实体类取

接下来就是xml和对象之间的互相转换

这是用jaxb来做的xml和对象互转,工具方法就是如下。除了用工具方法,还得在实体类上也做好注解,不然会报错

package com.hnykx.util;import cn.hutool.core.util.XmlUtil;
import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;public class XmlToObject extends XmlUtil {/*** xml字符串转为bean** @param xml   xml字符串* @param clazz 需要转成的对象* @return*/@SuppressWarnings("unchecked")public static <T> T parseBean(String xml, Class<T> clazz) {try {JAXBContext context = JAXBContext.newInstance(clazz);Unmarshaller unmarshaller = context.createUnmarshaller();return (T) unmarshaller.unmarshal(new StringReader(xml));} catch (JAXBException e) {e.printStackTrace();return null;}}/*** 将对象转为xml字符串 编码为utf-8 不格式化 省略头部声明** @param obj 待转的对象* @return*/public static String toStr(Object obj) {return toStr(obj, false, true);}/*** 将对象转为xml字符串 编码为utf-8** @param obj          待转的对象* @param isFormat     是否格式化* @param isIgnoreHead 是否忽略头部* @return*/public static String toStr(Object obj, boolean isFormat, boolean isIgnoreHead) {try {JAXBContext context = JAXBContext.newInstance(obj.getClass());Marshaller marshaller = context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// //编码格式marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, isFormat);// 是否格式化生成的xml串marshaller.setProperty(Marshaller.JAXB_FRAGMENT, isIgnoreHead);// 是否省略xm头声明信息// 不进行转义字符的处理marshaller.setProperty(CharacterEscapeHandler.class.getName(), new CharacterEscapeHandler() {@Overridepublic void escape(char[] ch, int start, int length, boolean isAttVal, Writer writer)throws IOException {writer.write(ch, start, length);}});StringWriter writer = new StringWriter();marshaller.marshal(obj, writer);return writer.toString();} catch (JAXBException e) {e.printStackTrace();return null;}}/*** 将对象转为xml字符串 编码为utf-8 格式化 省略头部声明** @param obj 待转的对象* @return*/public static String toPrettyStr(Object obj) {return toStr(obj, true, true);}/*** 将对象转为xml字符串 编码为 GBK** @param obj          待转的对象* @param isFormat     是否格式化* @param isIgnoreHead 是否忽略头部* @return*/public static String toStrGF(Object obj, boolean isFormat, boolean isIgnoreHead) {try {JAXBContext context = JAXBContext.newInstance(obj.getClass());Marshaller marshaller = context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK");// //编码格式marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, isFormat);// 是否格式化生成的xml串marshaller.setProperty(Marshaller.JAXB_FRAGMENT, isIgnoreHead);// 是否省略xm头声明信息// 不进行转义字符的处理marshaller.setProperty(CharacterEscapeHandler.class.getName(), new CharacterEscapeHandler() {@Overridepublic void escape(char[] ch, int start, int length, boolean isAttVal, Writer writer)throws IOException {writer.write(ch, start, length);}});StringWriter writer = new StringWriter();marshaller.marshal(obj, writer);return writer.toString();} catch (JAXBException e) {e.printStackTrace();return null;}}}

实体类的注解

@Data
@XmlRootElement(name = "Response")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({AppAndDoadResBody.class})
public class AppAndDoadResBase {@XmlElement(name="Head",required = true)private ResHeadVO Head;@XmlElement(name="Body",required = true)private AppAndDoadResBody Body;
}

@XmlRootElement是用来标注外层是标签的,@XmlElement是用来标注外层标签里面的每个内容标签,注意,最好不要用泛型,因为jaxb有个小bug,绑定多个类的话会失效

@Data
@XmlAccessorType(XmlAccessType.FIELD)
public class ResHeadVO {private String  TxType;private String   TxTime;private String   Code;private String Message;
}

如果是属性有复杂的带有list集合包对象的话,可以这样写注解

@Data
@XmlRootElement(name="Body")
@XmlAccessorType(XmlAccessType.FIELD)
public class QueryResBody {@XmlElement(name = "CertList",required = true)private List<ItemModel> CertList;
}
@Data
@XmlRootElement(name="ItemModel")
@XmlAccessorType(XmlAccessType.FIELD)
public class ItemModel {private String  SubscriberName;
}

下面是对象转xml和xml转对象的结果图

觉得还行的话点个赞叭,有问题的也可以评论,看到会回复的哦

顺便再推荐个好用的工具wangzhan,可以用xml和json示例报文直接解析快速生成实体类

json转javaBean实体类在线生成工具—工具猫

xml和对象之间的互相转换以及json和对象之间的互相转换相关推荐

  1. Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象

    文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...

  2. 在线Excel文件解析转换成JSON格式

    在线Excel文件解析转换成JSON格式 在线Excel文件解析转换成JSON格式 本工具可以将上传的Excel文件解析转换成JSON格式,支持下载 本工具可以将上传的Excel文件解析转换成JSON ...

  3. C#中JSON和对象之间互相转换功能示例

    本文实例讲述了C#实现JSON和对象之间互相转换功能.分享给大家供大家参考,具体如下: 1.首先是声明用户信息对象,DataContract修饰类,表示可以被解析成JSON,DataMember修饰属 ...

  4. JSON 与 对象 、集合 之间的转换(转)

    JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的 ...

  5. Hibernate中实体对象的瞬时态,持久态,游离态之间的转换

    所谓瞬时态:就是创建一个对象,还没有保存到数据库中的时候,没有id,没有在session缓存中 所谓持久态:执行sava()之后,就先被session托管,session中有个Map存放着对象,有id ...

  6. Flutter json 和 对象之间的转换

    这里写的是 Flutter 自带的 convert 的 json 转换.下面以 3 个实例来说明. 一.自定义对象中不再嵌套其他对象: class Student {String name;int a ...

  7. 二进制和字符串之间的互相转换 及 json文件和csv文件

    二进制和字符串之间的互相转换 及 json文件和csv文件 二进制和字符串之间的互相转换 字符串转二进制 将字符串数据转换成二进制数据 str1 = 'abc' b_str1 = b'abc' # 在 ...

  8. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...

    json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...

  9. IDEA使用GsonFormat完成JSON和JavaBean之间的转换

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客:点 ...

最新文章

  1. 几款二极管、三极管结电容与反向电压
  2. python模块导入红色波浪线_解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题...
  3. android xml正方形,使用Android Constraintlayout创建一排均匀分布的正方形
  4. 两个大屏可视化案例的布局与实现
  5. C++ 11互斥锁的应用(针对于多线程的情况)
  6. 文件类型总结 MIME
  7. 虚拟打印机安装后没了该怎么办
  8. 英语演讲计算机ppt模板,英语ppt演讲稿
  9. 如何构建稳健的品期carry组合
  10. Mobx-action
  11. van-search自动聚焦
  12. 如何将Asp.net 2.0网站部署到服务器
  13. 优化elelment ui 的 dialog 样式
  14. KIngcms 5.1版本增加站内链接功能自动给指定关键词加上链接
  15. 基于知识图谱的智能问答
  16. 常用传感器讲解十八--爆震传感器感器(KY-031)
  17. ccf-星际旅行(80分)
  18. 通过javax.mail发送邮件(示例gmail、qq)
  19. 矩阵分析与应用学习笔记1
  20. RSA加密算法的java实现

热门文章

  1. Java初中级框架面试题
  2. python小海龟画粗细渐变的线_Python 笔记_第一篇_童子功_8. 画图工具 (小海龟 turtle)...
  3. 2018 年了,你还是只会 npm install 吗
  4. leetcode-Algorithms-561|数组拆分 I
  5. matlab var历史模拟法,关于VaR历史模拟法的两个程序
  6. PHP处理字符串的常用函数
  7. 360开源k8s集群管理平台:wayne的使用与介绍
  8. 太阁CCNA笔记(1)
  9. 植发咨询日记之打砖块
  10. subplot的用法