[英]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.