【发布时间】:2019-01-17 18:15:33
【问题描述】:
我有两个 Java 类:
public class Request
{
private List<Item> subItems;
public Request()
{
}
public List<Item> getSubItems()
{
return subItems;
}
public void setSubItems(List<Item> subItems)
{
this.subItems = subItems;
}
}
class Item
{
private String name;
private String functionName;
//...elided...
}
将被传递的subItems 可以是复杂的(包括一个函数)或简单的(只是一个名称)。这些可以混合使用。为了简化 JSON,我希望能够接受以下内容:
JSON:
{
"subItems": [
{
"name": "complexType",
"function": "someFunction"
},
"simpleType"
]
}
然后将其变成以下实例的等效项:
Request request = new Request();
request.setSubItems(
Arrays.asList(
new Item( "complexType", "SomeFunction" ),
new Item( "simpleType" )
)
);
Jackson/ObjectMapper 可以做到这一点吗? 我需要哪些设置和注释?
【问题讨论】:
-
您应该尝试自定义方式将 json 放入相应的地图,即使用 JSONObject,然后获取与条目对应的所有值,然后将所有值添加到您的项目列表中。
-
@Jabongg 我宁愿不必做一个自定义的 json 创建者或只是将其编组到地图,因为那样我就不能使用验证注释
标签: java json spring spring-boot jackson