내가Jackson Streaming API를 사용하여 <Integer, Custom object> 맵을 직렬화하는 방법은 무엇입니까?
class Person {
ArrayList<MyOtherObject> lstObjects;
...
}
다음
Map<Integer, Person> personMap
있어 잭슨 스트리밍 API와 그지도를 직렬화 할 것 말해봐?
JsonGenerator g =...;
g.writeArrayFieldStart("PersonMap");
if (personMap != null) {
Iterator<Map.Entry<Integer, Person>> iter = personMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<Integer, Person> pairs = iter.next();
Integer key = (Integer) pairs.getKey();
Person person = (Person) pairs.getValue();
g.writeNumber(key.intValue());
person.saveToFileRaw(g); // Write the object
}
}
g.writeEndArray(); // PersonMap
및 person.saveToFileRaw
는try {
g.writeStartObject();
g.writeObjectFieldStart("Inf");
if (lstInfo != null) {
for (PersonInfo info: lstInfo)
info.saveToFileRaw(g); // Write another object
}
g.writeEndObject();
String s = PersonType.token(type);
g.writeStringField("Tp", s);
g.writeStringField("Add", address);
그래서 질문과 같습니다 어떻게 사용자 정의 객체의 배열 /지도를 작성하려면? person.saveToFileRaw의 g.writeStartObject()는 값을 예상한다는 예외를 던집니다.
아이디어가 있습니까?
작성하려는 JSON 구조는 무엇입니까? 코드에서 명확하지 않습니다 – skaffman
' 그냥 파일을 어떻게 든 저장하려면 노력하고 있지만 키/개체 또는 이와 비슷한 배열을 만들려고했다 .PersonMap : 의사 코드의 {[키, 사람], [키, 사람]} – Marcus
그냥 객체를 파일에 저장하고 싶다면 Streaming API를 사용할 필요가 없습니다 : ObjectMapper를 통한 데이터 바인딩은 잘 작동합니다 : new ObjectMapper(). writeValue (new File ("output.json"), myObject); – StaxMan