前言
在做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","[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小威