正在读取json文件并进行更新



我试图理解按照标题所说的去做的过程。我在java中使用Gson依赖性来做这件事。

我正在从我使用的另一个JSON格式的服务中获取信息。所以我想得到这些信息,在里面放一些额外的信息(比如日期/时间(,然后用来搜索。程序是:

  1. 获取JSON信息(比如"id"(并将其添加到您拥有的JSON文件中
  2. 向JSON文件添加更多信息(比如"上传日期和时间"(
  3. 最后,保存更新后的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代表JavaScript Object Notation,它不过是一种格式化数据的方法。

取自此处:

JSON建立在两个结构上:

  1. 名称/值对的集合。在各种语言中,这是实现为对象、记录、结构、字典、哈希表、键控列表或关联数组
  2. 值的有序列表。在大多数语言,这可以实现为数组、向量、列表或序列

要解决您的问题:

  1. 获取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();
    
  2. 向JSON文件添加更多信息(比如"上传日期和时间"(

    这将获得YYYY.MM.DD-HH.MM.SS中的格式

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
    
  3. 最后,保存更新后的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();
    

您可以在此处和此处阅读有关JsonReaderJsonWriter的更多信息。

最新更新