• JSONObject例子


    说起JSON,大家就谈不上陌生了,因为对于数据传输语言,各位只认json,即使有XML语言,但是各位很少用吧。我也是,但是之前用过的json转换工具各种各样,我记忆中有过GSON(google)、fastJSON(阿里巴巴)、jsonlib等等。这次使用的JSONObject

    需求一:调用第三方接口返回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方法来处理。

    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数据返回?

      因为JSONObject对象存储数据的键值对儿的形式来存储的,类似于map集合存储数据,我们最关心的是如何将JSONObject对象转成json格式的字符串返给调用者,代码如下:

    @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();
        }
    

      

  • 相关阅读:
    云计算是什么?它有哪些形式?
    TensorFlow从0到1之浅谈深度学习(5)
    excel如何快速统计出某一分类的最大值?
    Excel怎样根据出生日期,快速计算出其年龄呢?
    Excel只想显示一部分日期,怎样把其余部分隐藏起来?
    Excel数据透视表的日常应用技巧
    人工智能(机器学习)学习之路推荐
    人工智能之常用数据结构与算法(python)
    excel如何快速计算日期对应的生肖?
    excel 如何制作带下拉框的动态折线图表
  • 原文地址:https://www.cnblogs.com/lsohvaen001/p/7920726.html
Copyright © 2020-2023  润新知