如何使用GSON从Primeface应用程序下载json文件



我需要从应用程序中下载一个文件.json,但要选择它的位置。

  • 我知道如何将文件下载到磁盘,比如图像<p:fileDownload value=""/>

    public StreamedContent getFile(){
    return new DefaultStreamedContent(stream, "image/jpg", "img.jpg"); 
    }
    
  • 我知道如何用给定路径用GSON写入文件

    try(JsonWrite j = new JsonWriter(new OutputStreamWriter(
    new FileOutputStream("C:\...\...\file.json"), "UTF-8"))){
    j.beginObject();
    // ...
    j.name("foo");
    gson.toJson(myObj, Foo.class, j);
    //...
    j.endObject();
    }catch(...){...}
    

但我不知道如何将两者结合起来,才能选择位置并在这个位置编写json?

所以我认为你不能随心所欲。您所能做的就是流式传输JSON文件,并为其命名为"test.JSON"。出于安全原因,您不允许告诉浏览器您希望用户下载的位置。我相信它类似于这个请求:浏览文件系统来选择JSF 中的目录

然而,如果你只想发送一个GSON文件,允许用户下载它。

XHTML:

<p:fileDownload value="#{myController.downloadFile()}" />

JAVA:

public StreamedContent downloadFile() {
// convert GSON object to InputStream
String gson= json.getJSONObject("data").toString();
InputStream stream = new ByteArrayInputStream(gson.getBytes());
DefaultStreamedContent  content = new DefaultStreamedContent(stream,
MediaType.APPLICATION_JSON,
"test.json");
return content;
}

最新更新