Java 如何在同一类下设计JSON映射中所示的多个对象?

Java 如何在同一类下设计JSON映射中所示的多个对象?,java,json,jackson,jackson-databind,jackson-modules,Java,Json,Jackson,Jackson Databind,Jackson Modules,我需要实现一个JSON响应,如下所示 { "group":{ "name": "MyGroup" } "members": { "member1" : { "memberCity": "Mumbai", "memberName": "Ajay" }, "member2" : { "memberCity": "Banglore", "memberName": "Vijay" }, "memb

我需要实现一个JSON响应,如下所示

{
  "group":{
    "name": "MyGroup"
  }
  "members": {
    "member1" : {
      "memberCity": "Mumbai",
      "memberName": "Ajay"
    },
    "member2" : {
      "memberCity": "Banglore",
      "memberName": "Vijay"
    },
    "member3" : {
      "memberCity": "Chennai",
      "memberName": "Sujay"
    }
}
public class Members{

@JsonProperty("member1")
private Member member1;

@JsonProperty("member2")
private Member member2;

@JsonProperty("member3")
private Member member3;

//getters and setters
}
我现在正在做的是我有一个反应模型,它包含了两个类, 团体 成员

Members类有多个成员对象,如下所示

{
  "group":{
    "name": "MyGroup"
  }
  "members": {
    "member1" : {
      "memberCity": "Mumbai",
      "memberName": "Ajay"
    },
    "member2" : {
      "memberCity": "Banglore",
      "memberName": "Vijay"
    },
    "member3" : {
      "memberCity": "Chennai",
      "memberName": "Sujay"
    }
}
public class Members{

@JsonProperty("member1")
private Member member1;

@JsonProperty("member2")
private Member member2;

@JsonProperty("member3")
private Member member3;

//getters and setters
}
当我保存组时,我会取回组对象并取回成员,创建新成员,设置它们并将它们设置回响应状态

Set<MemberEntity> createdGroupMembers = createdGroup.getMembers();
Members allGroupMembers = new Members();
List<Member> allMembers = new ArrayList<>();

for (MemberEntity mem : createdGroupMembers) {
Member groupMember = new Member();
groupMember.setMemberName(mem.getMemberName();
groupMember.setMemberCity(mem.getMemberCity();
allMembers.add(groupMember);
}

allGroupMembers.setMember1(allMembers.get(0));
allGroupMembers.setMember2(allMembers.get(1));

response.setMembers(allGroupMembers);
Set createdGroupMembers=createdGroup.getMembers();
Members allGroupMembers=新成员();
List allMembers=new ArrayList();
对于(MemberEntity mem:createdGroupMembers){
成员组成员=新成员();
setMemberName(mem.getMemberName();
setMemberCity(mem.getMemberCity();
添加(groupMember);
}
allGroupMembers.setMember1(allMembers.get(0));
allGroupMembers.setMember2(allMembers.get(1));
响应。集合成员(所有组成员);
但我不认为这是一个很好的方法来实现这一点。关于如何更好地实现这一点,有什么建议吗


感谢您的帮助。

如果您将
成员的类型更改为
数组
,则更易于处理和维护。输出json将变为:

{
"group":{
"name": "MyGroup"
}
"members": [  // changed this from object to array.
"member1" : {
  "memberCity": "Mumbai",
  "memberName": "Ajay"
},
"member2" : {
  "memberCity": "Banglore",
  "memberName": "Vijay"
},
"member3" : {
  "memberCity": "Chennai",
  "memberName": "Sujay"
}
  ]
}
然后您可以将成员定义为

@JsonProperty("members")
private ArrayList<Member> membersList;

我也有同样的想法,也尝试过。但问题是,如何使用json值命名单个成员,如member1、member2、member3等。我们可以为此类情况动态生成@JsonProperty吗?您可以使用索引而不是单独的名称。例如,0索引将是member1,1索引将是member2,但不是预期的JSON结构不符合要求。预期的JSON将由下一个服务处理。我不能像那样独自进行更改。这就是为什么需要以正确的方式实现这一点。