前言
在做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);