想对以下一个json做解析
[{"X":["2006","2007","2008","2009","2010","2011"],
   "Y":{"本科生数":["21525","3333","4444","5555","5334","6666"],
        "研究生数":["3333","3333","4444","8437","4736"]}}]并将X下的数据放到一个list,Y下的本科生数下的数据放一个list,研究生数下的数据放一个list,请问怎么写程序?ps,X,Y是固定的,但是本科生数,研究生数这两个键值不一定固定,也有可能是其他属性JSON

解决方案 »

  1.   

    构建对象
    一个ATT对象下面包含X对象和Y对象
    Y对象下面包含本科生和研究生对象的两个List
    X对象下面包含一个List<String>
    提供get和set方法。
    最后
    借用下面的方法http://bbs.csdn.net/topics/390337723进行解析
      

  2.   

    比如说用net.sf.json包的话,
    String input = "[{\"X\":[\"2006\",\"2007\",\"2008\",\"2009\",\"2010\",\"2011\"],\"Y\":{\"本科生数\":[\"21525\",\"3333\",\"4444\",\"5555\",\"5334\",\"6666\"],\"研究生数\":[\"3333\",\"3333\",\"4444\",\"8437\",\"4736\"]}}]";
    JSONArray jsonArray = JSONArray.fromObject(input);for (Object object : jsonArray) {
    JSONObject jsonObject = (JSONObject) object; JSONArray xjson = (JSONArray) jsonObject.get("X");
    List<String> xList = (List<String>) xjson.toCollection(xjson, String.class); JSONObject yjson = (JSONObject) jsonObject.get("Y");
    Iterator<String> it = yjson.keys();
    while (it.hasNext()) {
    String key = it.next();
    JSONArray json = (JSONArray) jsonObject.get(key);
    List<String> yList = json.toList(json, String.class);
    }
    }
      

  3.   

    String input = "[{\"X\":[\"2006\",\"2007\",\"2008\",\"2009\",\"2010\",\"2011\"],\"Y\":{\"本科生数\":[\"21525\",\"3333\",\"4444\",\"5555\",\"5334\",\"6666\"],\"研究生数\":[\"3333\",\"3333\",\"4444\",\"8437\",\"4736\"]}}]";
    JSONArray jsonArray = JSONArray.fromObject(input);
     
    for (Object object : jsonArray) {
        JSONObject jsonObject = (JSONObject) object;
     
        JSONArray xjson = (JSONArray) jsonObject.get("X");
        List<String> xList = (List<String>) xjson.toCollection(xjson, String.class);
     
        JSONObject yjson = (JSONObject) jsonObject.get("Y");
        Iterator<String> it = yjson.keys();
        while (it.hasNext()) {
            String key = it.next();
            JSONArray json = (JSONArray) jsonObject.get(key);
            List<String> yList = json.toList(json, String.class);
        }
    }
    测试了下json为null
      

  4.   

    笔误,
    循环里
    JSONArray json = (JSONArray) jsonObject.get(key);
    应为
    JSONArray json = (JSONArray) yjson.get(key);
      

  5.   

    可以用jackson-core-asl-1.9.9.jar包
    ObjectMapper mapper = new ObjectMapper();
    List<Content2> list = mapper.readValue(jsonString, new TypeReference<List<Content2>>(){});
    其中Content2是按照json格式对应的java对象