簡體   English   中英

使用 java 將文件中的 json 轉換為標准格式

[英]Converting json in a file to standard format using java

我正在使用 json 簡單地處理 java 中的 json 數組。 這是下面的代碼:

            JSONObject job=new JSONObject();
            try{job.put("roll-no",Integer.parseInt(rollnoprompt.getText()));}
            catch(Exception e){}
            JSONArray Marks=new JSONArray();


            for(int i=0;i<mrkcls.size();++i){

            JSONObject job1=new JSONObject();
            job1.put("Question-no",i+1);
            job1.put("total-marks",Float.parseFloat(mrkcls.get(i).questionMarks.getText()));

            JSONArray Parts=new JSONArray();
            char ch=97;
            java.util.List<JTextField> partsMarksList=mrkcls.get(i).partsMarks;

            for(int j=0;j<partsMarksList.size();++j){
                JSONObject job2=new JSONObject();
                job2.put("part",Character.toString(ch));
                job2.put("marks",Float.parseFloat(partsMarksList.get(j).getText()));

                ++ch;
                Parts.add(job2);
            }

            job1.put("Parts",Parts);
            Marks.add(job1);
        }   
        job.put("Marks",Marks);
        reportCard.add(job);
        //System.out.println(job);

        FileWriter file=new FileWriter("Result.json");
        file.write(reportCard.toJSONString());

        file.flush();
        file.close();

我注意到文件 Result.json 中的 json 數組寫在一條直線上,如下所示:

[{"roll-no":1,"Marks":[{"Parts":[{"part":"a","marks":2.0},{"part":"b","marks":1.0},{"part":"c","marks":2.0}],"Question-no":1,"total-marks":5.0},{"Parts":[{"part":"a","marks":2.0},{"part":"b","marks":2.0}],"Question-no":2,"total-marks":4.0},{"Parts":[],"Question-no":3,"total-marks":4.0},{"Parts":[{"part":"a","marks":2.0},{"part":"b","marks":2.0}],"Question-no":4,"total-marks":4.0}]}]

我肯定會再次從程序中讀取這個文件,但這種格式看起來還是不太好。 我想要這種格式:


[{
    "roll-no":1
    "Marks":[{
    "Question-no":1,
    "total-marks":6,
    "Parts":[{
        "Question-no":"a",
        "Marks":2
    },{
        "Question-no":"b",
        "Marks":2
    },{
        "Question-no":"c",
        "Marks":2
    }]
    },{
    "Question-no":2,
    "total-marks":5,
    "Parts":[]
    },{
    "Question-no":3,
    "total-marks":5,
    "Parts":[]
    }]
}]

我記得在 mongodb 中使用了一個pretty()方法來實現這一點,在 java 中是否有類似的方法?

非常感謝任何幫助!

謝謝你。

在初始化 object 映射器時使用它

 mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);

如果你使用org.json.JSONObject可以設置indentFactor即每一級縮進添加的空格數,

reportCard.add(job.toString(4));

請注意,它在org.json中可用,不在org.json.simple

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM