JAVA中使用JSON進行資料傳遞__Java

來源:互聯網
上載者:User

最近在做一個基於JAVA Servlet的WEB應用以及對應的Anroid應用用戶端的開發工作。

其中,在介面的訪問和資料的傳輸方面使用的比較多的是使用JSON對象來操作格式化資料:在伺服器端採用JSON字串來傳遞資料並在WEB前端或者Android用戶端使用JSON來解析接收到的資料。


首先,在JAVA中使用JSON需要引入 org.json 包(點擊 這裡 可以下載相應的JAR包。), 並在程式中引入相應的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         //建立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         //建立JSONArray數組,並將json添加到數組12         JSONArray array = new

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.