[英]Convert Java List to a JSON Object keyed by attribute of the list objects using Jackson and Spring MVC 3.1
在我的Spring MVC 3.1项目中,我有一个模型结构,其中一个对象的属性是一系列子对象。 例如:
public class Person {
private String name;
private List<Pet> pets;
}
然后是一个Pet类,例如:
public class Pet {
private String name;
private String species;
}
使用默认的Jackson HTTP Converter,我可以生成(并接受)如下所示的Person对象:
{
"name": "Tres",
"pets": [ {
"name": "Fido",
"species": "Dog"
},
{
"name": "Mittens",
"species": "Cat"
} ]
}
但是我希望它生成的是:
{
"name": "Tres",
"pets": {
"Fido": {
"species": "Dog"
},
"Mittens": {
"species": "Cat"
}
}
}
我知道我可以创建自己的视图转换器,以将子对象手动转换为Map,但是如果有任何现有的Spring功能,我希望使用它。 我也曾尝试调查某些Jackson注释,但还没有找到满足我需求的任何东西。
另外,我不希望将pets属性存储为Person in Map,因为这2个对象存储在MongoDB中并且位于2个不同的集合中。 因此,我需要使用自定义转换器对MongoDB读取的数据或使用自定义转换器对HTTP响应的输出执行转换。
感谢您在View转换器或Mongo转换器上获得的任何帮助!
这是我会做的...
public class Pet {
private String name;
private String species;
public String getName()
{
return name;
}
public String getSpecies()
{
return species;
}
}
使用此人的名字作为地图的钥匙,并且地图的价值是宠物的清单
Map<String,List> peopleWithPets = new HashMap<String, List>();
peopleWithPets.put("Person Name", new ArrayList<Pet>());
JSONObject json = new JSONObject();
json.putAll( peopleWithPets );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.