gpt4 book ai didi

java - 使用 Jackson 和 Spring MVC 3.1 将 Java 列表转换为由列表对象的属性键入的 JSON 对象

转载 作者:行者123 更新时间:2023-11-29 09:11:18 25 4
gpt4 key购买 nike

在我的 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"
}
}
}

我知道我可以创建自己的 View 转换器来手动将我的子对象转换为 Map,但如果有任何现有的 Spring 功能,我更愿意使用它。我也曾尝试调查 Jackson 的一些注释,但尚未找到满足我需要的任何内容。

此外,我不希望将 pets 属性存储为 Person 中的 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 的键, map 的值是宠物列表

Map<String,List> peopleWithPets = new HashMap<String, List>();
peopleWithPets.put("Person Name", new ArrayList<Pet>());

JSONObject json = new JSONObject();
json.putAll( peopleWithPets );

关于java - 使用 Jackson 和 Spring MVC 3.1 将 Java 列表转换为由列表对象的属性键入的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com