Java中怎么将xml和json进行转换
今天就跟大家聊聊有关Java 中怎么将xml 和 json进行转换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
站在用户的角度思考问题,与客户深入沟通,找到奎文网站设计与奎文网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、雅安服务器托管、企业邮箱。业务覆盖奎文地区。
一、相关注解与方法
1.注解(部分)
@JsonProperty:把属性的名称序列化成另一个名称 @JsonFormat:日期格式转换(例如:@JsonFormat(timezone=“GTM+8”,pattern=“yyyy-MM-dd HH:mm:ss”)) @JsonIgnoreProperties:忽略类的某个属性(作用于类,例如:@JsonIgnoreProperties({“属性1”,“属性2”})) @JsonIgnore:忽略类的某个属性(作用于属性,直接在属性加注解即可) @JacksonXmlElementWrapper:可用于指定List等集合类,外围标签名 @JacksonXmlProperty:指定包装标签名,或者指定标签内部属性名 @JacksonXmlRootElement:指定生成xml根标签的名字 @JacksonXmlText:指定当前值,没有xml标签包裹 【tips】 在类中的部分属性使用@JsonProperty和@JacksonXmlProperty注解时,生成的XML字符串标签顺序可能会发生改变
2.方法(主要)
XmlMapper类的方法
实体类(任意类型)解析为xml的字符串 String writeValueAsString(Object var1); 把字符串转换为实体类T readValue(String var1, Class var2); 读取xml字符串为json格式 JsonNode readTree(String var1);
JsonNode类的方法
获取json中的某个节点值 JsonNode get(String var1);
二、使用步骤
1.新建实体类
//java项目www.fhadmin.org @Data public class Student { private String studentNo; private String studentName; }
2.新建测试类
【tips】代码中打印语句后的注释为控制台打印的结果
//java项目www.fhadmin.org public class Demo { //创建XmlMapper对象,用于实体与json和xml之间的相互转换 private static final XmlMapper XML_MAPPER = new XmlMapper(); public static void main(String[] args) throws Exception { Student s = new Student(); s.setStudentNo("202101001"); s.setStudentName("张三"); //实体类解析为xml的字符串(理论上可以将任意类型解析为xml字符串) String xmlStr = XML_MAPPER.writeValueAsString(s); System.out.println(xmlStr);////把字符串转换为实体类 Student student = XML_MAPPER.readValue(xmlStr, Student.class); System.out.println(student);//Student(studentNo=202101001, studentName=张三) //读取xml字符串为json格式 JsonNode jsonNode = XML_MAPPER.readTree(xmlStr); System.out.println(jsonNode);//{"studentNo":"202101001","studentName":"张三"} //获取json中的某一个节点值 JsonNode studentNo = jsonNode.get("studentNo"); System.out.println(studentNo);//"202101001" } } 202101001 张三
运行结果
三、综合案例
1.实体类部分
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import lombok.Data; import java.util.List; /** * @java项目 www.fhadmin.org * @version V1.0 * @Title: * @Description: * @date 2021/1/10 21:40 */ @Data @JsonIgnoreProperties({"ignore"})//忽略类的某个属性 public class Clazz { //把属性的名称序列化成另一个名称 @JsonProperty("CLAZZNO") private String clazzNo; //指定包装标签名,或者指定标签内部属性名 @JacksonXmlProperty(localName = "CLAZZNAME") private String clazzName; //忽略类的某个属性 @JsonIgnore private String ignore; private Teacher teacher; //指定外围标签名 @JacksonXmlElementWrapper(localName = "studentList") //指定标签名 @JacksonXmlProperty(localName = "student") private ListstudentList; } @Data class Teacher { private String teacherName; private String teacherSex; } @Data class Student { private String studentNo; private String studentName; }
2.测试类部分
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import java.util.ArrayList; import java.util.List; /** * @java项目www.fhadmin.org * @version V1.0 * @Title: * @Description: * @date 2021/1/10 21:43 */ public class Demo { //创建XmlMapper对象,用于实体与json和xml之间的相互转换 private static final XmlMapper XML_MAPPER = new XmlMapper(); public static void main(String[] args) throws Exception{ Clazz c = new Clazz(); c.setClazzNo("201802"); c.setClazzName("三年级2班"); c.setIgnore("这是被忽略的属性"); Teacher t = new Teacher(); t.setTeacherName("宋老师"); t.setTeacherSex("男"); c.setTeacher(t); Liststudents = new ArrayList<>(); Student s1 = new Student(); s1.setStudentNo("202101001"); s1.setStudentName("张三"); Student s2 = new Student(); s2.setStudentNo("202101002"); s2.setStudentName("李四"); students.add(s1); students.add(s2); c.setStudentList(students); //实体类解析为xml的字符串 String xmlStr = XML_MAPPER.writeValueAsString(c); System.out.println(xmlStr); //把某一类型的东西转换为实体类 Clazz clazz = XML_MAPPER.readValue(xmlStr, Clazz.class); System.out.println(clazz); //取出Clazz类的studentList属性并打印 List studentList = clazz.getStudentList(); System.out.println(studentList); //读取xml字符串为json格式 JsonNode jsonNode = XML_MAPPER.readTree(xmlStr); System.out.print(jsonNode); } }
运行结果
Clazz(clazzNo=201802, clazzName=三年级2班, ignore=null, teacher=Teacher(teacherName=宋老师, teacherSex=男), studentList=[Student(studentNo=202101001, studentName=张三), Student(studentNo=202101002, studentName=李四)]) [Student(studentNo=202101001, studentName=张三), Student(studentNo=202101002, studentName=李四)] {"teacher":{"teacherName":"宋老师","teacherSex":"男"},"CLAZZNO":"201802","CLAZZNAME":"三年级2班","studentList":{"student":{"studentNo":"202101002","studentName":"李四"}}} 宋老师 男 201802 三年级2班 202101001 张三 202101002 李四
看完上述内容,你们对Java 中怎么将xml 和 json进行转换有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
网站栏目:Java中怎么将xml和json进行转换
文章分享:http://pwwzsj.com/article/gdjjsj.html