我在打印java json数据时遇到困难

时间:2018-08-12 11:30:53

标签: java json spring

我目前在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毫米厚的意大利面条”  }]

2 个答案:

答案 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
}