在上一篇文章中对于http请求的使用过程中发现,由于是系统间的交互因而请求的报文不仅仅是java对象,更多的可能是xml格式与json格式的报文,为方便后期使用,封装了一个转换工具类。
首先java对象与xml的相互转换需要使用到jaxb来实现,pom文件中加载jaxb-api。
jaxb进行转换的核心类为:Unmarshaller(xml转换为java对象)与Marshaller,首先初始化jaxbContextJAXBContext context = JAXBContext.newInstance(classType);
然后根据转换源获取Unmarshaller或者Marshaller具体代码如下:/**
* xml转换为java对象
* */
@SuppressWarnings("unchecked")
public T xmlToBean(String xml,Class classType){
T t = null;
try {
JAXBContext context = JAXBContext.newInstance(classType);
Unmarshaller unMarshaller = context.createUnmarshaller();
t = (T)unMarshaller.unmarshal(new StringReader(xml));
System.out.println(t);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return t;
}
/**
* java对象转换为xml
* */
public String beanToXml(T t){
StringBuffer buffer = new StringBuffer();
JAXBContext context;
Marshaller marshaller;
try {
context = JAXBContext.newInstance(t.getClass());
marshaller = context.createMarshaller();
marshaller.marshal(t, new File("test.xml"));
InputStreamReader reader = new InputStreamReader(new FileInputStream("test.xml"));
int temp;
while((temp = reader.read())!=-1){
buffer.append((char)temp);
}
System.out.println(buffer);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buffer.toString();
}
通过以上方式转换时需要注意的是java对象实体必须用jaxb注解进行表述,具体如下:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
@XmlElement(name = "id_")
private Integer id;
@XmlElement(name = "name_")
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
*
*/
public Student() {
super();
}
@Override
public String toString() {
return String.format("Student [id=%s, name=%s]", id, name);
}
}
其中如果需要对字段的名称进行自定义时就必须使用@XmlAccessorType(XmlAccessType.FIELD)。
若需要对xml报文进行多层嵌套,则使用集合,比如:
@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
public class Group {
@XmlElement(name = "group_id")
private Integer groupId;
@XmlElement(name = "group_name")
private String groupName;
@XmlElementWrapper(name = "students")
@XmlElement(name = "student")
private List<Student> students;
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public String toString() {
return String.format("Group [groupId=%s, groupName=%s]", groupId,
groupName);
}
}
,下面是测试代码:
public static void main(String[] args) {
//xml转换为java对象
StringBuilder sb = new StringBuilder();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<student>");
sb.append(" <id_>43283344</id_>");
sb.append(" <name_>中文测试</name_>");
sb.append("</student>");
new XmlUtil().xmlToBean(sb.toString(),Student.class);
//java对象转换为xml格式
/*Group group = new Group();
Student s = new Student();
s.setId(123123);
s.setName("测试中文");
Student s1 = new Student();
s1.setId(123123);
s1.setName("测试中文");
group.setGroupId(111);
group.setGroupName("fredzhanghao");
List<Student> list = new ArrayList<Student>();
list.add(s);
list.add(s1);
group.setStudents(list);
new XmlUtil().beanToXml(group);*/
}
而对于json格式与java对象的相互转换也同理可以参考已封装的json-lib进行快速转换。
分享到:
相关推荐
总结来说,`EasyXmlUtil`是一个实用的Java工具类,它封装了XML与Map之间的相互转换功能,使得开发者能方便快捷地处理这两种数据格式。通过理解和使用此类,可以提高开发效率,简化数据处理的复杂性。在项目中,只需...
在Java编程中,XML与Java对象的相互转化是常见的需求,特别是在持久化、配置文件处理或网络通信中。本教程通过一个Eclipse项目演示了如何实现这一转化。 首先,我们需要理解XML文档的基本结构。XML文档由元素...
总结来说,JOX是Java开发中一个实用的工具,尤其在处理XML数据和Java对象之间的转换时。它简化了XML与JavaBeans之间的交互,提高了开发效率,使得处理XML变得更加简单。通过定义符合JavaBeans规范的类,开发者可以...
它是Java EE标准的一部分,提供了一种机制来将Java对象与XML文档相互转换。使用JAXB,可以通过简单的API调用来序列化和反序列化Java对象为XML文档,反之亦然。 **特点:** - **简单易用**:只需在Java类上添加一些...
将XML与JavaBean相互转换是Java开发中的常见需求,尤其是在处理配置文件或对象持久化时。 在Java中,XML与JavaBean之间的转换主要依赖于两个关键的技术:JAXB(Java Architecture for XML Binding)和DOM(Document...
Java工具包Hutool是一个开源的Java工具类库,它集成了许多在日常开发中常用的功能模块,旨在简化Java开发的工作量,提高开发效率。Hutool的命名来源于对“Hu”(致敬前任公司)和“tool”(工具)的合成,同时谐音...
Gson是Google提供的一个开源库,它允许我们在Java对象和JSON字符串之间进行无缝转换。本文将深入探讨如何使用Gson库进行这种转化操作。 首先,我们需要引入Gson库。如果你使用Maven,可以在pom.xml文件中添加以下...
- 将XML数据与Java对象相互转换。 - 提供查询XML数据的方法,比如XPath表达式的支持。 总结起来,"XML Helper"可能是一个强大的Java工具,用于简化XML的处理任务,提高开发效率。其核心功能可能围绕XML的解析、创建...
`jsonUtil.txt` 文件可能是一个包含了`json-lib`使用示例或者实用工具函数的文本文件,它可能包含如何创建JSON对象、如何将Java对象转换为JSON以及如何处理复杂数据结构(如嵌套对象和数组)的代码片段。在实际项目...
6. **与JAXB集成**:DOM4J可以与Java的另一个XML处理框架JAXB无缝集成,实现对象与XML之间的相互转换。 在"Dom4j用法详解.doc"中,你可能会看到以下内容: - 如何使用DOM4J解析XML文件,包括选择合适的解析器,加载...
在Java开发中,json-lib是一个非常实用的库,它提供了丰富的API来处理JSON数据,包括序列化Java对象为JSON字符串,以及反序列化JSON字符串回Java对象。本篇文章将深入探讨json-lib库的使用方法、功能特性及其在实际...
JavaScript也可以调用Java对象,通过`JavaObject`接口,Java对象可以在JavaScript环境中使用。例如,可以将Java函数注册到JavaScript上下文中,然后在JavaScript代码中调用: ```java engine.put("myJavaFunction",...
3. **XML与JSON互转**:json-lib还支持XML与JSON之间的相互转换,这对于那些需要在XML和JSON间切换的项目非常有用。 4. **序列化与反序列化**:可以将Java对象序列化为JSON字符串,然后在需要时再反序列化回来,这...
Json-lib是一个Java库,它提供了多种数据类型(如Java集合、Map、Array等)与JSON的相互转换功能。在处理涉及XML和JSON混合的数据时,开发人员可以先利用XOM解析XML,然后通过Json-lib将解析得到的XML对象转换为JSON...
总结来说,"mongodb-test-mvn"项目提供了一个实用的工具类,帮助Java开发者在MongoDB 3.x环境中更方便地进行对象转换,简化了数据操作。学习并应用这个示例,可以提升你在处理MongoDB数据时的效率和灵活性。
Betwixt 是 Apache Commons 中的一个工具类,提供了 XML 与 Java 对象之间相互转换的功能。通过使用 Betwixt,可以轻松地将 XML 文件转换为 Java 对象,或者将 Java 对象转换为 XML 文件。 Codec Codec 是 Apache ...
2. Java对象与JSON的相互转换:json-lib支持将Java的基本类型、集合、Map以及自定义对象直接转换为JSON格式,反之也可以将JSON数据还原为Java对象。这对于数据交换和序列化非常有用。 3. JSON格式的处理:库中包含...
Gson是Google提供的一个开源库,它允许Java对象和JSON数据之间进行相互转换。Gson可以轻松地将Java对象转换为JSON字符串,反之亦然,这对于网络通信和数据存储非常有用。例如,当你需要将Java对象发送到服务器或者从...
"Json-lib-2.4.jdk15.jar" 是一个针对Java平台的JSON处理库,主要功能是提供JSON和Java对象之间的相互转换。Json-lib是一个开放源代码项目,它支持多种Java环境,包括JDK1.5。这个版本(2.4.jdk15)特别强调了对JDK...