1
我想有傑克遜保存值一起類型,如下所示:傑克遜爲什麼不保存類型?
@Test
public void doesNotSaveNestedTypes() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, JsonTypeInfo.As.WRAPPER_ARRAY);
mapper.registerSubtypes(MyResultList.class, MyResult.class);
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(getMyResultList());
System.out.println(json);
}
private MyResultList getMyResultList(){
List<MyResult> myList = new ArrayList<>(3);
myList.add(new MyResult(1));
myList.add(new MyResult(2));
return new MyResultList(myList);
}
的類型是不是在生成的JSON:
{
"myResults" : [ {
"r" : 1
}, {
"r" : 2
} ]
}
以下是參與這個例子類:
public class MyResult {
private int r;
public MyResult(){}
public MyResult(int r){this.r = r;}
public int getR() {
return r;
}
@Override
public String toString() {
return "MyResult{" +
"r=" + r +
'}';
}
}
import lombok.*;
import java.util.List;
@Data
@RequiredArgsConstructor
@EqualsAndHashCode
@ToString
public class MyResultList {
@NonNull
private final List<MyResult> myResults;
}
基於文檔,我期待得到如下:
{
["org.mypackage.MyResultList", {"myResults": [
["org.mypackage.MyResults", {
"r" : 1
},
(snip)
我嘗試刪除lombok屬性 - 這根本沒有任何幫助。 如何製作傑克遜保存類型?
請添加預期的輸出 – msfoster
@msfoster預期的輸出添加。 – AlexC