2017-05-30 14 views
0

私は自分のプロジェクトディレクトリに作成してはいけない.jsonファイル(Jsonファイル)としてレスポンスをダウンロードするコードをSpring Bootで作成していますが、それは/私は上記のコードでこれを行うことが可能ですが、私が作るたびに、それがメインのsrc /に新しいファイルa.jsonを作成し、要求するJavaオブジェクトJavaオブジェクトから作成したJSONファイルとしてレスポンスをダウンロードする方法

@RequestMapping(value = "/", method = RequestMethod.GET,produces = "application/json") 
public ResponseEntity<InputStreamResource> downloadPDFFile() 
     throws IOException { 


    User user = new User(); 

    user.setName("Nilendu"); 
    user.setDesignation("Software Engineer"); 
    createJsonFile(user); 

    ClassPathResource jsonFile = new ClassPathResource("a.json"); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); 
    headers.add("Pragma", "no-cache"); 
    headers.add("Expires", "0"); 

    return ResponseEntity 
      .ok() 
      .contentLength(jsonFile.contentLength()) 
      .contentType(
        MediaType.parseMediaType("application/octet-stream")) 
      .body(new InputStreamResource(jsonFile.getInputStream())); 
} 

void createJsonFile(User user) { 

    ObjectMapper mapper = new ObjectMapper(); 
    try { 

     // Convert object to JSON string and save into a file directly 
     File file = new File("src/main/resources/a.json"); 
     System.out.println(file.exists()+" ++++"); 
     mapper.writeValue(file, user); 
     System.out.println("File Created"); 
    } catch (JsonGenerationException e) { 
     e.printStackTrace(); 
    } catch (JsonMappingException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 

}

からその場で作成する必要がありますリソースディレクトリ私はしたくない。どのファイルでもこの​​ファイルを作成したくないですが、まだファイルをダウンロードできるはずです

+0

Nilendu、それはあなたが使用可能なものを取得した場合、回答を受け入れるのは良いスタイルです。 [誰かが私の質問に答えたときにはどうすればいいですか?](https://stackoverflow.com/help/someone-answers)を読んでください。あなたはまだ答えに投票することはできませんが、あなたが投稿した質問への回答を受け入れることは、あなただけのための証拠です。だから、どうぞ... –

答えて

0

ファイルに書き込まないでください!ヘッダ

.header("Content-Disposition", "attachment; filename=\"any_name.json\"") 
+0

ありがとうございました。それでも私は1つの問題があります。ダウンロードしたファイル形式はファイルの種類を示していますが、そのファイル内のデータはJSON形式です。ダウンロード中に.jsonタイプのファイルとしてファイルを作成する方法 –

+0

ブラウザで "Save as type"ドロップダウンを "json"としたいのですか?もしそうなら、あなたは 'Content-Disposition'ヘッダーを追加し、ファイル名に.json接尾辞を付けることができます。そのときはブラウザのところで、 '.json'へのドロップダウン形式をデフォルトにしています。 – TedTrippin

+0

もう一つのことは、 'application/json'でメソッドに注釈を付けましたが、あなたの応答を' application/octet-stream'に設定しています。あなたはそれらを同じにしたいかもしれません。 – TedTrippin

-1
あなただけのGsonを使用してJSONにオブジェクトを変換、ファイルを作成する必要がいけない

Gson gson = new Gson(); 
String jsonString = gson.toJson (user); 
を追加 .jsonファイルタイプのプロンプトブラウザに

byte[] buf = mapper.writeValueAsBytes(user); 

return ResponseEntity 
     .ok() 
     .contentLength(buf.length) 
     .contentType(
       MediaType.parseMediaType("application/octet-stream")) 
     .body(new InputStreamResource(new ByteArrayInputStream(buf))); 

EDIT

関連する問題