我目前在Java中收到json文件,将json文件放在论坛上,对其进行调试,然后尝试sysout。
问题是,我尝试输出到jsp中的表,但是只有json的最后一个源出来了。
我们如何解决这个问题?
@RequestMapping(value = "spaghettiSub", method = RequestMethod.POST)
public String spaghetti(ModelMap modelMap) {
JSONParser jsonParser = new JSONParser();
try{
JSONArray page = (JSONArray) jsonParser.parse(new FileReader("d:\\spaghetti.json"));
int pageCnt = page.size();
Map<String,String> map = new HashMap<String,String>();
List<Map<String,String>> spaghettiList = new ArrayList<Map<String,String>>();
for(int i = 0; i < pageCnt; i++) {
Object obj = page.get(i);
JSONObject jsonObject = (JSONObject) obj;
String no = (String) jsonObject.get("no");
String name = (String) jsonObject.get("name");
String explanation= (String) jsonObject.get("explanation");
map.put("no", no);
map.put("name", name);
map.put("explanation", explanation);
spaghettiList.add(map);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
return "sub/" + this.urlbase + "/spaghetti";
}
json
[ { “ no”:“ 1”, “ name”:“ Spaghettoni”, “说明”:“它通常在Carbonara意大利面中使用,厚度约2毫米。” }, { “ no”:“ 2”, “ name”:“ Spaghettini”, “说明”:“ 1.6毫米厚意大利面” }, { “ no”:“ 3”, “ name”:“ Fedelini”, “说明”:“从1.3毫米到1.5毫米厚的意大利面条” }]
答案 0 :(得分:0)
您必须将此Map<String,String> map = new HashMap<String,String>();
移动到for循环中。
注意: 正如JB Nizet提到的,开始使用对象而不是JsonArray。
答案 1 :(得分:0)
第一件事
解决问题
JSP的最后一行是因为您已在for循环之外声明了Map。
如果您赶时间并且没有时间在世界上,那就移动
$HOME/RandomClips
内部
Map<String,String> map = new HashMap<String,String>();
这将解决您的问题。
改进您的代码
但是您可以通过执行以下操作来使其变得更好,更有效
定义DTO类
for(int i = 0; i < pageCnt; i++) {
使用此DTO类来填充值,就像对Map所做的那样
整个代码看起来像这样。
public class MyData {
private String no;
private String name;
private String explanation;
// getter setter
}