最近在做一個基于JAVA Servlet的WEB應用以及對應的Anroid應用客戶端的開發(fā)工作。 其中,,在接口的訪問和數據的傳輸方面使用的比較多的是使用JSON對象來操作格式化數據:在服務器端采用JSON字符串來傳遞數據并在WEB前端或者Android客戶端使用JSON來解析接收到的數據,。
1 import org.json.JSONArray; 2 import org.json.JSONException; 3 import org.json.JSONObject;
其次,在服務器端的Servlet類中,可以使用如下方法收集數據并生成相應的JSON字符串 1 //聲明一個Hash對象并添加數據 2 Map params = new HashMap(); 3 4 params.put("username", username); 5 params.put("user_json", user); 6 7 //聲明JSONArray對象并輸入JSON字符串 8 JSONArray array = JSONArray.fromObject(params); 9 put.println(array.toString());
在WEB前端可以通過javascript直接對JSON字符串進行解析,,在Android客戶端的話,,需要使用JSON類來解析字符串: 1 //@description: 根據接收到的JSON字符串來解析字符串中所包含的數據和數據對象 2 3 //接收到的JSON字符串 4 String result = "[{\"username\": \"your name\", \"user_json\": {\"username\": \"your name\", \"nickname\": \"your nickname\"}}]"; 5 6 //根據字符串生成JSON對象 7 JSONArray resultArray = new JSONArray(result); 8 JSONObject resultObj = resultArray.optJSONObject(0); 9 10 //獲取數據項 11 String username = resultObj.getString("username"); 12 13 //獲取數據對象 14 JSONObject user = resultObj.getJSONObject("user_json"); 15 String nickname = user.getString("nickname");
其實,主要就是涉及到以下集中數據類型之間的轉換: 1. String 轉換為JSON對象 1 import org.json.JSONArray; 2 import org.json.JSONException; 3 import org.json.JSONObject; 4 5 //別忘了添加上JSON包哦! 6 public class StringToJSON { 7 public static void main(String[] args) throws JSONException{ 8 9 System.out.println("abc"); 10 //定義JSON字符串 11 String jsonStr = "{\"id\": 2," + 12 " \"title\": \"json title\", " + 13 "\"config\": {" + 14 "\"width\": 34," + 15 "\"height\": 35," + 16 "}, \"data\": [" + 17 "\"JAVA\", \"JavaScript\", \"PHP\"" + 18 "]}"; 19 20 //轉換成為JSONObject對象 21 JSONObject jsonObj = new JSONObject(jsonStr); 22 23 //從JSONObject對象中獲取數據 24 JavaBean bean = new JavaBean(); 25 26 //根據屬性名稱獲取int型數據; 27 bean.setId(jsonObj.getInt("id")); 28 29 //根據屬性名獲取String數據; 30 bean.setTitle(jsonObj.getString("title")); 31 32 //根據屬性名獲取JSONObject類 33 JSONObject config = jsonObj.getJSONObject("config"); 34 bean.setWidth(config.getInt("width")); 35 bean.setHeight(config.getInt("height")); 36 37 //根據屬性名獲取JSONArray數組 38 JSONArray data = jsonObj.getJSONArray("data"); 39 for(int index = 0, length = data.length(); index < length; index++) { 40 //這里在org.json.JSONArray對象中居然沒有找到toArray方法,,求各位網友給出解決辦法?。?41 // bean.setLanguages(String[]); 42 } 43 } 44 } 45 46 class JavaBean{ 47 private int id ; 48 private String title; 49 private int width; 50 private int height; 51 private String[] languages; 52 53 //這里省略了設置器和訪問器 54 }
2. JSON對象轉換為String字符串 1 public static void main(String[] args) throws JSONException { 2 3 //創(chuàng)建JSONObject對象 4 JSONObject json = new JSONObject(); 5 6 //向json中添加數據 7 json.put("username", "wanglihong"); 8 json.put("height", 12.5); 9 json.put("age", 24); 10 11 //創(chuàng)建JSONArray數組,,并將json添加到數組 12 JSONArray array = new JSONArray(); 13 array.put(json); 14 15 //轉換為字符串 16 String jsonStr = array.toString(); 17 18 System.out.println(jsonStr); 19 }
最終輸出結果為: [{"username":"wanglihong","height":12.5,"age":24}] 3. 集合轉換為JSONArray對象 1 public static void main(String[] args)throws JSONException{ 2 //初始化ArrayList集合并添加數據 3 List<String> list = new ArrayList<String>(); 4 list.add("username"); 5 list.add("age"); 6 list.add("sex"); 7 8 //初始化HashMap集合并添加數組 9 Map map = new HashMap(); 10 map.put("bookname", "CSS3實戰(zhàn)"); 11 map.put("price", 69.0); 12 13 //初始化JSONArray對象,,并添加數據 14 JSONArray array = new JSONArray(); 15 array.put(list); 16 array.put(map); 17 18 //生成的JSON字符串為:[["username","age","sex"],{"price":69,"bookname":"CSS3實戰(zhàn)"}] 19 }
|
|