我在视图中创建了一个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
答案 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();
}