我试图理解按照标题所说的去做的过程。我在java中使用Gson依赖性来做这件事。
我正在从我使用的另一个JSON格式的服务中获取信息。所以我想得到这些信息,在里面放一些额外的信息(比如日期/时间(,然后用来搜索。程序是:
- 获取JSON信息(比如"id"(并将其添加到您拥有的JSON文件中
- 向JSON文件添加更多信息(比如"上传日期和时间"(
- 最后,保存更新后的JSON文件
所以我读了文件:
JsonReader reader = new JsonReader(new FileReader(filename));
我现在是否必须将其转换为字符串,然后更新字符串,以便最终将其写回json?
如果它不存在,我会创建一个空文件,然后,我可以用Json/Gson数据更新它吗?还是我必须创建一个Json文件?
try {
File jsonFile = new File("C:\uploads\datasets");
if (jsonFile.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
} catch (IOException e) {
e.printStackTrace();
}
原谅我可能犯过的任何新手/愚蠢的错误,我正在努力理解JSON。事实上,背后的哲学。
取自此处:
JSON建立在两个结构上:
- 名称/值对的集合。在各种语言中,这是实现为对象、记录、结构、字典、哈希表、键控列表或关联数组
- 值的有序列表。在大多数语言,这可以实现为数组、向量、列表或序列
要解决您的问题:
获取JSON信息(比如"id"(并将其添加到的JSON文件中
JsonReader reader = new JsonReader(new FileReader(inputFilename)); reader.beginArray(); reader.beginObject(); long id = -1; while (reader.hasNext()) { String value = reader.nextName(); if (value.equals("id")) { id = reader.nextLong(); } else { reader.skipValue(); } reader.endObject(); reader.endArray();
向JSON文件添加更多信息(比如"上传日期和时间"(
这将获得
YYYY.MM.DD-HH.MM.SS
中的格式String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
最后,保存更新后的JSON文件
创建
JsonWriter
。JsonWriter writer = new JsonWriter(new FileWriter(outputFilename)); writer.beginArray(); writer.beginObject(); writer.name("id").value(id); writer.name("timestamp").value(timestamp); writer.endObject(); writer.endArray();
您可以在此处和此处阅读有关JsonReader
和JsonWriter
的更多信息。