JSONObject 与 JSONArray 解析String成json(对象)字符串

一开始的json格式是
var str = { {"titletype":"xxxx" ...............} ,{"titletype":"xxxx" ...............},{"titletype":"xxxx" ...............} }
{"titletype":"xxxx" ...............} 每一个这个字符串,都可以解析成一个JSONArray

一整个 str 其实是可以解析成 JSONObject ,两者还是有区别的。
改成 按照题目类型分组,同时json字符串,如果有 \ 符号,可能会报错,解析不了,因此需要转义,或者去掉\。

danxuanti :
{"titletype":"xxxx" ...............} ,{"titletype":"xxxx" ...............}
duoxuanti:
{"titletype":"xxxx" ...............} ,{"titletype":"xxxx" ...............}
        System.out.println(resultJson);  //一开始只是普通json字符串
        //---------------------------在后台将json字符串重新组合,
       //单选,多选,问答,填空等等-----------
        String resultStr = new String(resultJson);
        //这一句很关键,清楚json字符串中的 \ 符号,不然会解析出问题
        resultStr = resultStr.replaceAll("\\\\", "");

        //后端处理json字符串,搞成按照titletype格式排序展示下来
        JSONObject obj = JSONObject.parseObject(resultStr);
        String ii = obj.getString("titleLists");
        JSONArray objj = JSONObject.parseArray(ii);
        //罗列多道题目的ArrayList值
        for(int i=0;i<objj.size();i++){
            System.out.println(objj.get(i).toString());
        }
        JSONObject oobj = new JSONObject();
        JSONArray jsonArray = new JSONArray(100);
        int count = 0;
        for(int i=0;i<objj.size();i++) {
            JSONObject ob = JSONObject.parseObject(objj.get(i).toString());
            if(ob.getString("titletype").equals("单选题")) {
                jsonArray.add(count++,objj.get(i));
            }
        }
        oobj.put("danxuan", jsonArray);
        jsonArray = new JSONArray(100);
         count = 0;
        for(int i=0;i<objj.size();i++) {
            JSONObject ob = JSONObject.parseObject(objj.get(i).toString());
            if(ob.getString("titletype").equals("多选题")) {
                jsonArray.add(count++,objj.get(i));
            }
        }
        oobj.put("duoxuan",jsonArray);
        jsonArray = new JSONArray(100);
        count = 0;
        for(int i=0;i<objj.size();i++) {
            JSONObject ob = JSONObject.parseObject(objj.get(i).toString());
            if(ob.getString("titletype").equals("问答题")) {
                jsonArray.add(count++,objj.get(i));
            }
        }
        oobj.put("wendati",jsonArray);
        jsonArray = new JSONArray(100);
        count = 0;
        for(int i=0;i<objj.size();i++) {
            JSONObject ob = JSONObject.parseObject(objj.get(i).toString());
            if(ob.getString("titletype").equals("判断题")) {
                jsonArray.add(count++,objj.get(i));
            }
        }
        oobj.put("panduanti",jsonArray);
        jsonArray = new JSONArray(100);
        count = 0;
        for(int i=0;i<objj.size();i++) {
            JSONObject ob = JSONObject.parseObject(objj.get(i).toString());
            if(ob.getString("titletype").equals("填空题")) {
                jsonArray.add(count++,objj.get(i));
            }
        }
        oobj.put("tiankongti",jsonArray);
        System.out.println(oobj.toJSONString());

拼凑成json对象直接 用属性运算符 . 取数据,可以避免json字段字符串里面有 [] {} 等符号解析出问题,因此优先使用json对象操作,而不是json字符串,会有很大的好处。

  

猜你喜欢

转载自www.cnblogs.com/EarlyBridVic/p/12722295.html
今日推荐