Как спроектировать несколько объектов, как показано в отображении JSON в одном классе? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть требование, когда мне нужно реализовать ответ JSON, как показано ниже:

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

Что я сейчас делаю, так это то, что у меня есть модель ответа, которая принимает оба класса, членов группы

В классе Members есть несколько объектов Member, как показано ниже:

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);

Но я не думаю, что это хороший способ реализовать это. Любые предложения о том, как это можно сделать лучше?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 21 октября 2019

Если вы измените тип memebers на array, его будет проще обрабатывать и обслуживать. Выводом 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;

Тогда будет проще добавить членов в этот список с помощью

membersList.add(new Member());
...