xml与json、javabean的互相转换



XML(Extensible Markup Language)和JSON(JavaScript Object Notation)是两种常见的数据交换格式,广泛应用于Web服务和数据存储。而JavaBean是一种符合特定规范的Java类,通常用于封装业务数据。在Java开发中,有时我们需要将XML转换为JSON,反之亦然,或者将这些格式与JavaBean对象进行互换,以便于数据处理和传输。本篇文章将深入探讨XML、JSON与JavaBean之间的转换方法。 我们来看XML和JSON的特性。XML是一种标记语言,以树状结构表示数据,其语法严格,易于阅读,但解析相对较慢。JSON则是一种轻量级的数据交换格式,基于JavaScript语法,数据结构直观,易于解析,且传输速度快。JavaBean作为Java中数据的载体,通常包含一组公共属性和getter、setter方法。 XML转JSON: 在Java中,我们可以使用各种库来实现XML到JSON的转换。例如,使用Jackson库的`jackson-dataformat-xml`模块,可以方便地完成转换。以下是一个示例: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; public class XmlToJsonConverter { public static void main(String[] args) throws Exception { String xml = "<root><name>John</name><age>30</age></root>"; ObjectMapper xmlMapper = new XmlMapper(); JsonNode jsonNode = xmlMapper.readTree(xml); ObjectMapper jsonMapper = new ObjectMapper(); String jsonString = jsonMapper.writeValueAsString(jsonNode); System.out.println(jsonString); } } ``` JSON转XML: 同样,使用Jackson库,我们可以使用`JsonNode`对象的`toPrettyString()`方法将JSON转换为XML: ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; public class JsonToXmlConverter { public static void main(String[] args) throws Exception { String jsonString = "{\"root\":{\"name\":\"John\",\"age\":30}}"; ObjectMapper jsonMapper = new ObjectMapper(); JsonNode jsonNode = jsonMapper.readTree(jsonString); ObjectMapper xmlMapper = new ObjectMapper(new XmlFactory()); String xmlString = xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonNode); System.out.println(xmlString); } } ``` JavaBean与XML/JSON的转换: JavaBean到XML/JSON的转换通常涉及反序列化和序列化过程。以Gson库为例,可以将JavaBean对象转换为JSON字符串,再由JSON字符串反序列化为JavaBean。 ```java import com.google.gson.Gson; public class BeanToJsonAndBack { public static class Person { private String name; private int age; // getters and setters } public static void main(String[] args) { Person person = new Person(); person.setName("John"); person.setAge(30); Gson gson = new Gson(); String jsonString = gson.toJson(person); System.out.println(jsonString); Person parsedPerson = gson.fromJson(jsonString, Person.class); System.out.println(parsedPerson.getName() + ", " + parsedPerson.getAge()); } } ``` 对于XML,可以使用JAXB(Java Architecture for XML Binding)框架,它提供了从Java对象到XML和反向转换的API。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; public class BeanToXmlAndBack { public static class Person { private String name; private int age; // getters and setters } public static void main(String[] args) throws Exception { Person person = new Person(); person.setName("John"); person.setAge(30); JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(person, System.out); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); Person parsedPerson = (Person) unmarshaller.unmarshal(new StringReader(xmlString)); System.out.println(parsedPerson.getName() + ", " + parsedPerson.getAge()); } } ``` 总结来说,XML、JSON和JavaBean在数据交换中各有优势。XML提供严谨的结构,适合复杂的、结构化的数据;JSON则更轻便,适合网络传输。在Java中,利用Jackson、Gson和JAXB等库,我们可以方便地实现这三种格式之间的转换,满足不同场景的需求。在实际开发中,根据项目特性和性能要求,选择合适的转换方式至关重要。















































- 1

- zhaojie1862015-03-19讲述了XML的解析

- 粉丝: 37
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


