天天看點

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

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","[email protected]" );         
4                 String test = "<user id='1001'><name>test12</name><email>[email protected]</email></user>";
5                  //讀取
6                 serializer.read(user, test);
7                 System. out.print(user.getId());      

2.Bean對象轉換為XML字元串

1                 User user = new User(1001,"test","[email protected]" );         
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","[email protected]" );         
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);      

作者:Ziv小威

出處:http://imziv.com/

關于作者:專注于Java技術的程式員一枚,此外對JS開發保持着較高的興趣。愛好音樂,閱讀,FM等等。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接。

如有問題,可以郵件:[email protected]

微網誌:Ziv小威