您的位置:首页 > 编程语言 > Java开发

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

2014-03-17 16:12 483 查看
前言

     在做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截图:



 

 
JSON 操作详细代码:
1.JSON字符串转换为Bean
 

1     /**
2      * JSON字符串转换为对象
3      * @param src JSON字符串
4      * @param target 目标Bean
5      */
6     public static <T> T String2Object(String src, Class<T> 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 <T>
5      */
6     public static <T> String toJSONString(List<T> 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 name;
42      }
43
44      public void setName(String name) {
45             this. name = name;
46      }
47
48      public String getEmail() {
49             return email;
50      }
51
52      public void setEmail(String email) {
53             this. email = email;
54      }
55 }


 
1.XML字符串转换为Bean对象

1                  //定义序列化对象
2                 Serializer serializer = new Persister();
3                 User user = new User(1001,"test","wewoor@foxmail.com" );
4                 String test = "<user id='1001'><name>test12</name><email>wewoor@foxmail.com</email></user>";
5                  //读取
6                 serializer.read(user, test);
7                 System. out.print(user.getId());


 
2.Bean对象转换为XML字符串

1                 User user = new User(1001,"test","wewoor@foxmail.com" );
2                  //定义序列化对象
3                 Serializer serializer = new Persister();
4                  //输出流
5                 OutputStream out = new ByteArrayOutputStream();
6                 serializer.write(user, out);
7                 result = out.toString();
8                 System. out.print(result);
9                 out.close();


 
3.将Bean对象写入XML文件

1                 file = new File("Ziv.xml");
2                 User user = new User(1001,"test","wewoor@foxmail.com" );
3                  //定义序列化对象
4                 Serializer serializer = new Persister();
5                  //将User user 写入ziv.xml
6                 serializer.write(user, file);


 
4.读取XML文件转换为Bean

1                 file = new File( "Ziv.xml");
2                 User user = new User();
3                  //定义序列化对象
4                 Serializer serializer = new Persister();
5                  //读取ziv.xml到User中
6                 serializer.read(user, file);


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐