十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
今天就跟大家聊聊有关Java 中怎么将xml 和 json进行转换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
站在用户的角度思考问题,与客户深入沟通,找到奎文网站设计与奎文网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、雅安服务器托管、企业邮箱。业务覆盖奎文地区。
@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字符串标签顺序可能会发生改变XmlMapper类的方法
实体类(任意类型)解析为xml的字符串 String writeValueAsString(Object var1); 把字符串转换为实体类T readValue(String var1, Class var2); 读取xml字符串为json格式 JsonNode readTree(String var1);
JsonNode类的方法
获取json中的某个节点值 JsonNode get(String var1);
//java项目www.fhadmin.org
@Data
public class Student {
private String studentNo;
private String studentName;
}【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);//202101001 张三
//把字符串转换为实体类
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"
}
}运行结果
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 List studentList;
}
@Data
class Teacher {
private String teacherName;
private String teacherSex;
}
@Data
class Student {
private String studentNo;
private String studentName;
} 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);
List students = 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进行转换有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。