JSONObject例子

提及JSON,你們就談不上陌生了,由於對於數據傳輸語言,各位只認json,即便有XML語言,可是各位不多用吧。我也是,可是以前用過的json轉換工具各類各樣,我記憶中有過GSON(google)、fastJSON(阿里巴巴)、jsonlib等等。此次使用的JSONObjectjava

需求一:調用第三方接口返回json字符串,咱們本身處理成所需格式的json數據?json

  首先調用第三方接口返回的json字符串格式以下:數據結構

1 data="{"status":"查詢成功","data":{"total":143,"list":[{"exceptionnum":"28","areacn":"餘杭區","areaid":"330110000000000000","comnum":"150"},{"exceptionnum":"22","areacn":"拱墅區","areaid":"330105000000000000","comnum":"97"},{"exceptionnum":"22","areacn":"蕭山區","areaid":"330109000000000000","comnum":"178"},......]},"code":"1"}"

  其次咱們須要處理成咱們本身的json數據。首先呢就是須要將字符串數據轉成JSONObject對象後,才能夠調用它的一系列API方法來處理。app

1 JSONObject object = JSONObject.fromObject(data);

  最後根據上面給出的data數據格式分析得出,它的內部數據結構是鍵值對的形式存儲數據的,可是咱們在這裏須要注意的是,JSONObject獲取數據是有講究的。若是獲取以後是一個簡單字符串就能夠用get或getString方法來獲取,好比獲取上面的code的值[示例代碼一]。若是想獲取data中的list集合數據,則不能直接用get或getString方法了,必須用getJSONArray方法來獲取,可是這時還得注意層級關係,由於list在data裏面的小data中嵌套着,因此得先獲取到小data以後而後才能經過小data獲取list數據[示例代碼二]。工具

【示例代碼一】
1 //String code = object.get("code").toString(); 2 String code = object.getString("code");
【示例代碼二】
1 JSONArray jsonArray = object.getJSONObject("data").getJSONArray("list");    //獲取小data中的list數據 2 total = object.getJSONObject("data").get("total").toString();           //獲取小data中的total數據

  需求二:往JSONObject對象中添加屬性及屬性值,最後將JSONObjecct對象轉成json數據返回?google

  由於JSONObject對象存儲數據的鍵值對兒的形式來存儲的,相似於map集合存儲數據,咱們最關心的是如何將JSONObject對象轉成json格式的字符串返給調用者,代碼以下:code

@RequestMapping(value = "/jsonObjectTest",method=RequestMethod.GET)
    @ResponseBody
    public String jsonObjectTest(){
        // 拼接返回的json數據
        JSONObject returnJson = new JSONObject();
        JSONObject dataJson = new JSONObject();
        JSONArray dataArray = new JSONArray();
        
        // 模擬接口調用後得到的結果數據
        String data = getData();
        JSONObject object = JSONObject.fromObject(data);
        
        // 獲取狀態碼,若是是1表示調用成功,則獲取數據集合和總記錄數
        // String code = object.get("code").toString();
        String code = object.getString("code");
        String total = null;
        if("1".equals(code)){
            JSONArray jsonArray = object.getJSONObject("data").getJSONArray("list");
            total = object.getJSONObject("data").get("total").toString();
            for(int i=0; i<jsonArray.size(); i++){
                String itemStr = jsonArray.get(i).toString();
                JSONObject itemObject = JSONObject.fromObject(itemStr);
                String id = itemObject.get("id").toString();
                String name = itemObject.get("itemName").toString();
                String price = itemObject.get("price").toString();
                dataJson.put("id", id);
                dataJson.put("name", name);
                dataJson.put("price", price);
                
                dataArray.add(dataJson);
            }
        }
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("itemList", dataArray);
        map.put("total", total);
        
        // 根據APP端返回json數據
        String response = "{\"code\":\"200\",\"title\":\"成功\",\"message\":\"成功!\",\"style\":0}";
        returnJson.element("data", map);
        returnJson.element("response", response);
        
        return returnJson.toString();
    }
相關文章
相關標籤/搜索