我正在连接图书馆。我得到List<List> foodItemsList
如何使用Jackson序列化foodItemsList
?处理GET时会发生这种情况。
我已经了解了如何使用Jackson / Restlet序列化对象,但我无法弄清楚它是否有列表。
对于单个对象,这就是我的工作
@Get("json")
public Representation represent(Variant variant) throws ResourceException {
:
ObjectMapper mapper = new ObjectMapper();
String myFinString = mapper.writeValueAsString(profileSupportedInfo);
:
return myFinstring
}
profileSupportedInfo中的成员数据的getter setter就是我提供的。
在创建mapper对象之前,这是我的调用
List<List> totalfoodItem = someMemberFunc();
ObjectMapper mapper = new ObjectMapper
// my question - how do I serialize totalFoodItem
JSON中totalFoodItem
的首选表示如下所示
{
"food":[
{"name":"apple","img_loc":"123_apple.jpg","energ":210,"food_unit":"1"},
{"name":"rice","img_loc":"134_rice.jpg","energ":123,"food_unit":"100 gm"},
:
]
}
我缺少什么/不理解? 谢谢
答案 0 :(得分:1)
我担心为了成功序列化List,你必须把它变成一个数组。 JVM不会使用适当的类型信息序列化列表(在反序列化时,您只需获取通用对象列表),这不是杰克逊的错。但是,如果序列化数组,则必须键入数组,并且数组中的对象也将保留其类型。
根据您想要的JSON,您似乎只需要一个可以收集食物信息的辅助类,如下所示:
public class Food {
private String name;
private String img_loc;
private String energ;
private String food_unit;
public FoodItem(String name, String value, String energ, String food_unit) {
this.name = name;
this.value = values;
this.energ = energ;
this.food_unit = food_unit;
}
}
现在您只需要一个具有Food对象数组作为属性的对象:
public class TotalFoodItem {
private Food[] food;
...
}
您可以序列化该对象。杰克逊可能不会生成看起来与您想要的JSON完全相同的JSON(我自己没有尝试过这个代码),但它应该非常接近。