jackson에서 스트림 API json을 사용하는 방법은 무엇입니까? 아래 코드를 참조하십시오.특대 json 파일 작업. 항상 메모리 부족으로 돌아 가기
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = new HashMap<String, Object>();
List<Object> list = new ArrayList<Object>();
// Get images in database
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, USER, PASSWORD);
Statement s = connection.createStatement();
ResultSet r = s.executeQuery("select * from images");
while (r.next()) {
byte[] imageBytes = r.getBytes("image");
String imageBase64 = DatatypeConverter.printBase64Binary(imageBytes);
list.add(imageBase64);
}
} catch (SQLException e) {
}
map.put("images", list);
// Stream Json API
try {
mapper.writeValue(new File("c:\\images.json"), map);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
항상 메모리를 반환하십시오. 나는 잭슨과 함께 시내를 사용하는 것을 모른다. 나는 여분의 큰 json, 평균 2000 이미지, 각 이미지에 imageBase64 작업했습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
[다음은 예입니다] (http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/) –
@SotiriosDelimanolis 우수합니다. 정말 고마워요. 메모리 부족 문제를 해결하십시오. 이제는 json을 생성하는 방법을 보여줍니다. –
당신은 단지 일부 InputStream을 통해 파일을 읽을 수 있으며, String 내부로 밀고 인쇄 할 수 있습니다. –