반응형
Jackson - Java 목록을 json 배열에 쓰는 가장 좋은 방법
Jackson을 사용하여 ArrayList를 JsonArray로 변환합니다.
Event.java : JsonProperty로 매핑된 두 개의 필드 "field1", "field2"를 가진 Java bean 클래스입니다.
목표는 다음과 같습니다.
변환
ArrayList<Event> list = new ArrayList<Event>();
list.add(new Event("a1","a2"));
list.add(new Event("b1","b2"));
로.
[
{"field1":"a1", "field":"a2"},
{"field1":"b1", "field":"b2"}
]
생각할 수 있는 방법은 writeList 입니다.ToJsonArray():
public void writeListToJsonArray() throws IOException {
ArrayList<Event> list = new ArrayList<Event>();
list.add(new Event("a1","a2"));
list.add(new Event("b1","b2"));
OutputStream out = new ByteArrayOutputStream();
JsonFactory jfactory = new JsonFactory();
JsonGenerator jGenerator = jfactory.createJsonGenerator(out, JsonEncoding.UTF8);
ObjectMapper mapper = new ObjectMapper();
jGenerator.writeStartArray(); // [
for (Event event : list) {
String e = mapper.writeValueAsString(event);
jGenerator.writeRaw(usage);
// here, big hassles to write a comma to separate json objects, when the last object in the list is reached, no comma
}
jGenerator.writeEndArray(); // ]
jGenerator.close();
System.out.println(out.toString());
}
다음과 같은 것을 찾고 있습니다.
generator.write(out, list)
목록을 json 배열 형식으로 직접 변환한 다음 출력 스트림 "out"에 씁니다.
더 탐욕스럽다:
generator.write(out, list1)
generator.write(out, list2)
list1, list2를 단일 json 배열로 변환/추가하기만 하면 됩니다.'아웃'에 씁니다.
이것은 너무 복잡합니다.Jackson은 일반 오브젝트를 처리하는 것과 마찬가지로 작성기 메서드로 목록을 처리합니다.제가 당신의 질문을 오해하지 않았다면, 이 방법은 당신에게 도움이 될 것입니다.
public void writeListToJsonArray() throws IOException {
final List<Event> list = new ArrayList<Event>(2);
list.add(new Event("a1","a2"));
list.add(new Event("b1","b2"));
final ByteArrayOutputStream out = new ByteArrayOutputStream();
final ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(out, list);
final byte[] data = out.toByteArray();
System.out.println(new String(data));
}
못 찾겠어toByteArray()
@atrioom이 말했듯이, 그래서 저는StringWriter
, 시험해 보세요:
public void writeListToJsonArray() throws IOException {
//your list
final List<Event> list = new ArrayList<Event>(2);
list.add(new Event("a1","a2"));
list.add(new Event("b1","b2"));
final StringWriter sw =new StringWriter();
final ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(sw, list);
System.out.println(sw.toString());//use toString() to convert to JSON
sw.close();
}
아니면 그냥 쓰거나ObjectMapper#writeValueAsString
:
final ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(list));
objectMapper에는 객체를 파라미터로 받아들이는 writeValueAsString()이 있습니다.매개 변수가 문자열을 다시 가져올 때 개체 목록을 전달할 수 있습니다.
List<Apartment> aptList = new ArrayList<Apartment>();
Apartment aptmt = null;
for(int i=0;i<5;i++){
aptmt= new Apartment();
aptmt.setAptName("Apartment Name : ArrowHead Ranch");
aptmt.setAptNum("3153"+i);
aptmt.setPhase((i+1));
aptmt.setFloorLevel(i+2);
aptList.add(aptmt);
}
mapper.writeValueAsString(aptList)
언급URL : https://stackoverflow.com/questions/13514570/jackson-best-way-writes-a-java-list-to-a-json-array
반응형
'prosource' 카테고리의 다른 글
Facebook Auth with AngularJS 및 장고 REST 프레임워크 (0) | 2023.02.08 |
---|---|
EC2의 WordPress에서 플러그인을 설치하려면 FTP 자격 증명이 필요함 (0) | 2023.02.08 |
WordPress에서 세션 만료 시간을 변경하는 방법 (0) | 2023.02.08 |
Amazon EC2(Amazon Linux)에서 WordPress에 대한 사용 권한 설정 (0) | 2023.02.08 |
3분마다 Word press cronjob 실행 (0) | 2023.02.08 |