【问题标题】:update json file using servlet使用 servlet 更新 json 文件
【发布时间】:2016-08-16 11:33:51
【问题描述】:

在 java web 应用程序中,我想用服务器接收到的数据更新 json 文件。 Web Pages\json\cards.json 中已经存在 json 文件:

[
{
   "name": "Dhruvam Gupta",
   "job_title":"Android Developer",
   "email":"dhruvamprashant@gmail.com",
   "phone":"9839262655"
}
]

首先我从cards.json 读取JsonArray如下,这是成功完成的,因为 System.out.println(array) 给出前面和附加的数据:

[
{"name":"Dhruvam Gupta","job_title":"Android Developer","email":"dhruvamprashant@gmail.com","phone":"9839262655"},
{"email":"gabor.orosz@me.com","phone":"+36 30 610 6976","name":"Orosz Gábor","job_title":"Android Developer"}]

我已将数据读取为:

ServletContext context  = getServletContext();

    InputStream is = context.getResourceAsStream("/json/cards.json");
    InputStreamReader isr = new InputStreamReader(is);
    JsonReader jsr = new JsonReader(isr);
    JsonParser parser = new JsonParser();
    JsonElement element = parser.parse(jsr);
    JsonArray array = element.getAsJsonArray();

    JsonElement ele = parser.parse(card);

    array.add(ele);
    System.out.println(array);

但是当我尝试将 array 写入 json 文件时,会抛出异常:\json\cards.json(系统找不到指定的路径) .

 try {

        FileOutputStream fw = new FileOutputStream(new File("/json/cards.json"));

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fw));

        bw.write(array.getAsString());

        bw.close();

        fw.close();
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }

所以我想知道如何成功更新数据。 我认为问题在于从 servlet 打开 OutputStream 到cards.json 文件。

请帮我解决问题。

【问题讨论】:

    标签: java json servlets


    【解决方案1】:

    首先,阅读this,包括链接的教程和博文。

    其次,context.getResourceAsStream("/json/cards.json") 中的路径相对于您的 Web 应用程序的部署目录 类路径(即可以通过这种方式从 WEB-INF/lib 中的 JAR 文件中加载资源) .但是new File("/json/cards.json") 在你的文件系统上使用绝对路径,即路径不一样。

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 1970-01-01
      • 2014-11-17
      • 2020-09-23
      • 2016-06-22
      • 2014-08-26
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多