java - 解析一个json文件丢失的数据结构 - JAVA
问题描述
我必须创建一个包含一些对象(名称、字符串列表和日期列表)的 json 文件。问题是当我必须以 LocalDate 格式写入和读取日期时。如果我写然后我打印 jsonObject,日期的格式是好的。但是当我进行解析并突然打印对象时,日期的格式是错误的。
这是写入文件的代码:
public void aggiungi(){
JSONObject obj = new JSONObject();
obj.put("name", this.name);
JSONArray listMov = new JSONArray();
JSONArray listData = new JSONArray();
for(int i =0; i<this.movimenti.size(); i++){
listMov.add(movimenti.get(i));
listData.add(data.get(i));
}
obj.put("data", listData);
obj.put("mov", listMov);
File file=new File("file.json");
try {
file.createNewFile();
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(obj.toJSONString());
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(obj);
}
最后的 println 打印:
{"data":[2015-03-02,2015-04-05,2015-06-10],"mov":
["F24","PagoBancomat","Bollettino"],"name":"Stefano"}
这是阅读的代码:
JSONParser parser = new JSONParser();//per decodifica
Object obj;
try {
obj = parser.parse(new FileReader("file.json"));
JSONObject jsonObj = (JSONObject) obj;
String name= (String) jsonObj.get("name");
JSONArray list = (JSONArray) jsonObj.get("mov");
JSONArray listData = (JSONArray) jsonObj.get("data");
System.out.println(jsonObj);
Iterator<String> iteratorM = list.iterator();
Iterator<LocalDate> iteratorD = listData.iterator();
ArrayList<String> mov =new ArrayList<String>(list.size());
ArrayList<LocalDate> data =new ArrayList<LocalDate>(list.size());
while(iteratorM.hasNext()){
mov.add(iteratorM.next());
}
while(iteratorD.hasNext()){
data.add(iteratorD.next());
}
ContoCorrente cc = new ContoCorrente(data, mov, name);
Contatore task = new Contatore(cc);
this.executeTask(task);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
并打印
{"data":[2015,-3,-2,2015,-4,-5,2015,-6,-10],"mov":
["F24","PagoBancomat","Bollettino"],"name":"Stefano"}
最后一个打印分隔日期的结构,分隔日、月和年。
我在代码中做错了什么?谢谢你,对不起我的英语不好
解决方案
与其在 JSON 中设置为数据对象,不如先使用 dateformatters 将其解析为字符串,然后在 JSON 对象中将其设置为字符串。
推荐阅读
- postgresql - PostgreSql如何声明变量类型列表
- javascript - 这些规则对 reactjs 架构级别有效吗?
- python-3.x - 使用 Python 使用 kubernetes-client 在 Kubernetes pod 中连接到 MongoDB
- javascript - 用 JsPDF 替换 VirtualPrintEngine
- npm - NPM 配置文件在哪里?
- snakemake - Snakemake表格配置、展开、合并——如何正确展开输入文件?
- python - Python 打印我的类对象内存地址而不是我的数组的值
- php - 为什么事件监听器没有在 Lumen 中触发?
- arduino - 如果客户端重新连接,如何抑制 MQTT Last Will 消息?
- multithreading - 使用 Start-Process 时 Invoke-Parallel 正在等待