我正在尝试创建一个Java库来管理Card.v1 JSON,用于Alternative Runtime Google Add-ons函数。我已经让一切正常工作了,但是在让Jackson按照Google API所要求的方式 Package 类时遇到了一些问题。
例如,他们有一个Section,其中包含一个Widget列表,这些Widget是 Package 的文本段落、图像或按钮列表。
"sections":[ {
"widgets":[
{
"textParagraph":{
"text":"Your random cat 2:"
}
},
{
"image":{
"imageUrl":"https://cataas.com/cat"
}
},
{
"buttonList":{
"buttons":[
{
"text":"Happy",
},
{
"text":"Sad",
}
]
}
}
]
} ]
我创建了一个Text
类,如下所示:
@JsonTypeName("textParagraph")
@JsonTypeInfo(include= JsonTypeInfo.As.WRAPPER_OBJECT, use= JsonTypeInfo.Id.NAME)
public class TextParagraph extends BaseWidget
{
String text;
}
如果我使用对象Map器自己编写这个代码,我会得到预期的JSON:
"textParagraph" : {
"text" : "Testing Text"
}
但如果我有一个列表,然后打印它,它会失去“textParagraph” Package 。
{
"widgets" : [ {
"text" : "Testing Text"
}, {
"text" : "Testing Text 2"
}, {
"imageUrl" : "ggole.com/image.png",
"altText" : "Image Text"
} ]
}
是否缺少一个特殊的注解来 Package 列表对象?我真的很想在不使用任何自定义Map器或Wrapper类的情况下完成此操作。
有人在这里有经验吗?
1条答案
按热度按时间lb3vh1jj1#
好吧,我解决了。
在基类(BaseWidget)上,我需要添加
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
注解,这样列表就可以用 Package 器序列化。