从json数组中读取数据

时间:2014-06-08 08:21:16

标签: java json

我在视图中创建了一个json数组;它有动态数据我将该数组作为隐藏输入字段发送到弹簧控制器。 我得到的数组为:

String string=request.getParameter("jsonStateCompanyOnSubmit");
logger.info("jsong format is:"+string);

JSON数据是:

[
{
  "MH":{
     "data":{
        "ACC":4,
        "SHREE":2
     },
     "name":"MH"
  },
  "MP":{
     "data":{
        "ACC":9,
        "SHREE":6
     },
     "name":"MP"
  }
}
] 

我如何提取:

MH,ACC,4
MH,SHREE,2  
MP,ACC,9
MP,SHREE,6

4 个答案:

答案 0 :(得分:1)

不进入详细信息,请查看包javax.json。在那里,您可以找到Json类来创建解析器,然后以与地图类似的方式访问数据。

答案 1 :(得分:0)

除了别人写的内容之外 - 我会向你推荐杰克逊:

List<?> list = new org.codehaus.jackson.map.ObjectMapper().readValue(FileUtils.read(file), List.class);
for(Object obj: list){
    Map<?, ?> map = (Map<?, ?>) obj;
    //do your stuff here
}

答案 2 :(得分:0)

只需使用JSONObject构造函数。

  

JSONObject构造函数可用于将外部表单JSON文本转换为内部表单,其值可以使用get和opt方法检索,或者使用put和toString方法将值转换为JSON文本。

示例代码:(对其他值采用相同的方式)

JSONObject jsonObject = new JSONObject(jsonString);

JSONObject mh = jsonObject.getJSONObject("MH");
int acc=mh.getJSONObject("data").getInt("ACC"); // output 4

注意:在执行此操作之前,只需删除封闭[]。

答案 3 :(得分:0)

您需要从字符串中解析JSON。使用JSON.simple API,您可以使用解析器。

JSONParser parser = new JSONParser();
try {
    Object obj = parser.parse(string);
    JSONArray arr = (JSONArray) obj; 
    Iterator<Object> iterator = arr.iterator();
    while (iterator.hasNext()) {
      JSONObject m = (JSONObject)iterator.next();
      JSONObject data = (JSONObject) m.get("data");
      Integer acc = (Integer)data.get("ACC");
      ...  
    }   
} catch (ParseException e) {
  e.printStackTrace();
}