どのようにJSONとJSOnObjectの例を解析します


JSONと言えば、皆さんはよく知らないとは言えません.データ転送言語については、jsonしか知らないので、XML言語があっても、皆さんはあまり使わないでしょう.私もそうですが、以前使っていたjson変換ツールはいろいろあり、私の記憶にはGSON(google)、fastJSON(アリババ)、jsonlibなどがありました.今回使用したJSOnObject
需要1:サードパーティインタフェースを呼び出してjson文字列を返し、私たちは自分で必要なフォーマットのjsonデータを処理しますか?
まずサードパーティインタフェースを呼び出して返されるjson文字列フォーマットは、次のとおりです.
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の値[サンプルコード1]を取得します.dataのlist集合データを取得する場合は、直接getやgetStringメソッドを使用することはできません.getJSOnArrayメソッドで取得する必要がありますが、この場合は階層関係にも注意しなければなりません.listはdataの中の小さなdataにネストされているので、小さなdataを取得してから、小さなdataでlistデータを取得する必要があります[サンプルコード2].
【     】
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 map = new HashMap();
        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();
    }