读取json文件并更新

时间:2018-07-11 14:05:13

标签: java json gson

我正在尝试理解执行标题说明的过程。 我在具有Gson依赖关系的Java中执行此操作。

我正在从我使用的另一服务(以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。实际上,它背后的哲学。

1 个答案:

答案 0 :(得分:0)

JSON代表JavaScript Object Notation,它不过是格式化数据的一种方式。

取自here

  

JSON建立在两个结构上:

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

要解决您的问题:

  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 herehere