Android中JSON數據使用

fydxdk 9年前發布 | 33K 次閱讀 Android Android開發 移動開發

     JSON(JavaScript Object Notation) :一種輕量級的數據交換格式,基于JavaScript的一個子集。 JSON采用完全獨立于語言的文本格式,使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成(網絡傳輸速度快)。作為一種數據交換格式,JSON優勢很明顯(相對與我們通常使用的XML):JSON比XML體積小;JSON和JavaScript交互更加方便;JSON的速度要遠遠大于XML;JSON的解析要比XML的解析要方便等。

           JSON語法規則:

  • 數據在名稱/值(鍵值)對中
  • 數據由逗號(,)分隔
  • 花括號{}保存對象
  • 方(中)括號[]保存數組                                                                                                                                                                                    JSON 數據的書寫格式是:名稱/值對。名稱主要是用加“”的字符串表示,值可以是多種格式,包括
  • 數字(整數或浮點數)
  • 字符串(在雙引號("")中)
  • 邏輯值(true 或 false)
  • 數組(在方括號中)
  • 對象(在花括號中)
  • null
下面是一個JSON格式的數示例:

{  
"tel" : ["12345678", "87654321"], // 數組形式,以方括號保存  
"name" : "tianjiefeng", // 字符串  
"age" : 20, // 數值  
"address" : { "country" : "china", "province" : "guangdong" }, // JSON對象,以花括號保存  
"graduate" : true // 布爾值  
}

那個Android開發中JSON格式的數據如何創建?又如何解析呢?首先舉如何創建下面這個JSON的例子:

private JSONObject createJSONData() {  
        // 最外層是花括號{},所以就是一個JSONObject對象  
        JSONObject student = new JSONObject();  
        try {  
            // 第1個value是[ ],也就是一個JSONArray對象  
            JSONArray tel= new JSONArray();  
            phone.put("12345678");  
            phone.put("87654321");  
            person.put("tel", tel);  
            // 第2個value一個字符串  
            person.put("name", "tianjiefeng");  
            // 第3個value一個字符串數值  
            person.put("age", 20);  
            // 第4個value一個JSONObject對象  
            JSONObject address = new JSONObject();  
            address.put("country", "china");  
            address.put("province", "guangdong");  
            person.put("address", address);  
            // 第5個value一個布爾值  
            person.put("graduate", true);  
        } catch (JSONException e) {  
            e.printStackTrace();  
        }  
        return student ;  
    }  

如果要返回String字符串,只需要修改為return student.toString();下面看下如何把上面的JSON數據解析出來:

private Map<String, Object> parseJSONData(String json) {  
        Map<String, Object> resultMap = new HashMap<String, Object>();  
        try {  
            // 直接把JSON字符串轉化為一個JSONObject對象  
            JSONObject student= new JSONObject(json);  
            // 第1個鍵值對  
            resultMap.put("tel", person.getJSONArray("tel").toString());  
            // 第2個鍵值對  
            resultMap.put("name", person.getString("name"));  
            // 第3個鍵值對  
            resultMap.put("age", person.getInt("age"));  
            // 第4個鍵值對  
            resultMap.put("address", person.getJSONObject("address").toString());  
            // 第5個鍵值對  
            resultMap.put("graduate", person.getBoolean("married"));  
        } catch (JSONException e) {  
            e.printStackTrace();  
        }  
        return resultMap;  
    }  
}
上面就是用我們用JSONObject JSONArray進行數據操作。但在實際開發中,我們一般都會使用Gson解析JSON數據
首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI和相關jar包,然后通過GJSON封裝的方法來處理數據。 Gson的解析非常簡單,但是它的解析規則是必須有一個bean文件,這個bean文件的內容跟JSon數據類型是一一對應。
Gson有兩個重要的方法,一個就是tojson(tojson就是將bean里面的內容轉換為json內容),一個就是fromjson(從我們的Json對象封裝出一個一個的bean對象)。其簡單的例子可以參考:http://blog.csdn.net/kongzhichen/article/details/10135051

 本文由用戶 fydxdk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!