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

2014-11-24 01:03:55 · 作者: · 浏览: 0
前言
在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种。在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML文件的读写操作,以及与Bean之间的转换。示例代码都是经过Demo测试的,当然也会把代码上传到GitHub.需要的朋友可以看看。
准备工作
我这里对XML与JSON主要依赖以下2个开源库,当然像针对xml和JSON解析的开源库非常的多,下面这2个感觉相对用起来比较简单。需要注意的是如果缺少下面jar文件中的一个,可能就会出现ClassNotFound 异常,如果发现使用的方法在当前库中找不到,则可能是库版本不同造成的,可以去官网查阅。
JSON 操作详细代码:
1.JSON字符串转换为Bean
1 /**
2 * JSON字符串转换为对象
3 * @param src JSON字符串
4 * @param target 目标Bean
5 */
6 public static T String2Object(String src, Class target) throws
7 JsonParseException, JsonMappingException, IOException {
8
9 ObjectMapper mapper = new ObjectMapper();
10 //配置,允许使用单引号字符的JSON
11 mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
12 return mapper.readValue( new StringReader(src), target);
13 }
2.Bean对象转换为JSON字符串
1 /***
2 * 将对象序列化为JSONObject字符串
3 * @param object bean对象
4 * @return String JSONString
5 */
6 public static String toJSONObjectString(Object object) {
7 JSONObject jsonObject = JSONObject. fromObject(object);
8 return jsonObject.toString();
9 }
3.JSON字符串转换为ArrayList
1 /**
2 * 字符串转化为目标List列表
3 * @param src 源JSON串
4 * @param target 目标类型
5 * @return 转化后的列表对象
6 */
7 @SuppressWarnings("rawtypes")
8 public static List String2ObjectsList(String src, Class target)
9 throws Exception {
10
11 ObjectMapper mapper = new ObjectMapper();
12 mapper.configure(JsonParser.Feature. ALLOW_SINGLE_QUOTES, true);
13 List result = mapper.readValue( new StringReader(src),
14 TypeFactory. collectionType(ArrayList.class, target));
15
16 return result;
17 }
4.ArrayList转换为JSON字符串
1 /**
2 * 将List对象序列化为JSON文本
3 * @param list
4 * @return List
5 */
6 public static String toJSONString(List list) {
7
8 JSONArray jsonArray = JSONArray. fromObject(list);
9 return jsonArray.toString();
10 }
其他的一些复杂的Bean转换,就不再多介绍了,主要都是围绕JSONObject,JSONArray,ObjectMapper这几个对象操作的,具体可以看看官方文档。
XML 操作详细代码:
Simple 这个库通过对Bean对象提前通过添加注解的方式,从而简单易懂的方式来达到Bean与XML之间的转换
Bean Example:
1 import org.simpleframework.xml.Attribute;
2 import org.simpleframework.xml.Element;
3 import org.simpleframework.xml.Root;
4
5 @Root//根节点
6 public class User {
7
8 @Attribute//作为属性
9 private Integer id;
10
11 @Element//作为元素
12 private String name;
13
14 @Element
15 private String email;
16
17 public User() {
18 super();
19 }
20
21 public User(Integer id, String name, String email) {
22 super();
23 this. id = id;
24 this. name = name;
25 this. email = email;
26 }
27
28 /**
29 * the below is getter and setter function
30 */
31
32 public Integer getId() {
33 return id;
34 }
35
36 public void setId(Integer id) {
37 this. id = id;
38 }
39
40 public String getName() {
41 return n