2016-08-16 26 views
0

在java web应用程序中,我想用服务器接收的数据更新json文件。 JSON文件已经存在于网页\ JSON \ cards.json为:使用servlet更新json文件

[ 
{ 
    "name": "Dhruvam Gupta", 
    "job_title":"Android Developer", 
    "email":"[email protected]", 
    "phone":"9839262655" 
} 
] 

首先我从cards.json阅读JsonArray如下是成功完成,因为 系统。通过out.println(数组)给出了前面的和附加的数据为:

[ 
{"name":"Dhruvam Gupta","job_title":"Android Developer","email":"[email protected]","phone":"9839262655"}, 
{"email":"[email protected]","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); 

但是当我尝试写阵列以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()); 
    } 

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

Plz帮助我纠正这个问题。

回答

0

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

其次,在context.getResourceAsStream("/json/cards.json")的路径是相对于你的web应用OR类路径的部署目录(即有可能加载从例如JAR文件的资源,WEB-INF/lib这种方式)。但new File("/json/cards.json")在文件系统上使用绝对路径,即路径不相同。