Java JSON、XML文件/字符串与Bean对象互转解析

前言

     在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种。在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML文件的读写操作,以及与Bean之间的转换。示例代码都是经过Demo测试的,当然也会把代码上传到GitHub.需要的朋友可以看看。
 
准备工作
     我这里对XML与JSON主要依赖以下2个开源库,当然像针对xml和JSON解析的开源库非常的多,下面这2个感觉相对用起来比较简单。需要注意的是如果缺少下面jar文件中的一个,可能就会出现ClassNotFound 异常,如果发现使用的方法在当前库中找不到,则可能是库版本不同造成的,可以去官网查阅。
 
1.JSON解析库:
Jackson JSON Processor
官网:http://jackson.codehaus.org/
 
2.XML解析库 :
Simple XML serialization framework
官网:http://simple.sourceforge.net/home.php
 
lib截图:
Java JSON、XML文件/字符串与Bean对象互转解析
 
 
JSON 操作详细代码:
1.JSON字符串转换为Bean
 
     /**
* JSON字符串转换为对象
* @param src JSON字符串
* @param target 目标Bean
*/
public static <T> T String2Object(String src, Class<T> target) throws
JsonParseException, JsonMappingException, IOException { ObjectMapper mapper = new ObjectMapper();
//配置,允许使用单引号字符的JSON
mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
return mapper.readValue( new StringReader(src), target);
}
2.Bean对象转换为JSON字符串
     /***
* 将对象序列化为JSONObject字符串
* @param object bean对象
* @return String JSONString
*/
public static String toJSONObjectString(Object object) {
JSONObject jsonObject = JSONObject. fromObject(object);
return jsonObject.toString();
}
3.JSON字符串转换为ArrayList
     /**
* 字符串转化为目标List列表
* @param src 源JSON串
* @param target 目标类型
* @return 转化后的列表对象
*/
@SuppressWarnings("rawtypes")
public static List String2ObjectsList(String src, Class target)
throws Exception { ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
List result = mapper.readValue( new StringReader(src),
TypeFactory. collectionType(ArrayList.class, target)); return result;
}
4.ArrayList转换为JSON字符串
        /**
* 将List对象序列化为JSON文本
* @param list
* @return List <T>
*/
public static <T> String toJSONString(List<T> list) { JSONArray jsonArray = JSONArray. fromObject(list);
return jsonArray.toString();
}
     其他的一些复杂的Bean转换,就不再多介绍了,主要都是围绕JSONObject,JSONArray,ObjectMapper这几个对象操作的,具体可以看看官方文档。
 
XML 操作详细代码:
     Simple 这个库通过对Bean对象提前通过添加注解的方式,从而简单易懂的方式来达到Bean与XML之间的转换
 
Bean Example:
 import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root; @Root//根节点
public class User { @Attribute//作为属性
private Integer id; @Element//作为元素
private String name; @Element
private String email; public User() {
super();
} public User(Integer id, String name, String email) {
super();
this. id = id;
this. name = name;
this. email = email;
} /**
* the below is getter and setter function
*/ 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 String getEmail() {
return email;
} public void setEmail(String email) {
this. email = email;
}
}
1.XML字符串转换为Bean对象
                  //定义序列化对象
Serializer serializer = new Persister();
User user = new User(1001,"test","wewoor@foxmail.com" );
String test = "<user id='1001'><name>test12</name><email>wewoor@foxmail.com</email></user>";
//读取
serializer.read(user, test);
System. out.print(user.getId());
 
2.Bean对象转换为XML字符串
                 User user = new User(1001,"test","wewoor@foxmail.com" );
//定义序列化对象
Serializer serializer = new Persister();
//输出流
OutputStream out = new ByteArrayOutputStream();
serializer.write(user, out);
result = out.toString();
System. out.print(result);
out.close();
 
3.将Bean对象写入XML文件
                 file = new File("Ziv.xml");
User user = new User(1001,"test","wewoor@foxmail.com" );
//定义序列化对象
Serializer serializer = new Persister();
//将User user 写入ziv.xml
serializer.write(user, file);
 
4.读取XML文件转换为Bean
                 file = new File( "Ziv.xml");
User user = new User();
//定义序列化对象
Serializer serializer = new Persister();
//读取ziv.xml到User中
serializer.read(user, file);
上一篇:C#中另辟蹊径解决JSON / XML互转的问题


下一篇:Spring.xml中配置注解context:annotation-config和context:component-scan简述