从JSON数组读取数据[重复]

hwamh0ep  于 2023-11-20  发布在  其他
关注(0)|答案(4)|浏览(102)

此问题在此处已有答案

How to parse JSON in Java(36个回答)
9年前关闭。
我在视图中创建了一个json数组;它有动态数据,我将该数组作为隐藏输入字段发送到spring控制器。
我得到的数组是:

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

nxagd54h

nxagd54h1#

不需要深入细节,检查包javax.json。在那里你可以找到JSON类来创建一个解析器,然后以类似于map的方式访问数据。

ars1skjm

ars1skjm2#

除了其他人写的-我会推荐给你对Jackson:

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
}

字符串

yizd12fk

yizd12fk3#

简单地使用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

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

xqkwcwgp

xqkwcwgp4#

您需要从字符串解析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();
}

字符串

相关问题