有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在POJO类中填充列表并将它们组合在一起

我有一个JSON,我把它转换成一个由3个不同类组成的POJO

{
    "Id": "2a0dd1fc",
    "name": "AABBCCDD",
    "description": "test",
    "active": true,
    "Groups": [
      {
        "agentGroups": [
          {
            "Id": "AXSNqSWSILMPnVvB-Cdc"
          }
        ],
        "order": 1,
        "duration": 0
      },
      {
        "agentGroups": [
          {
            "Id": "AXZlGzTR4pYEiRgUOqOL"
          }
        ],
        "order": 2,
        "duration": 60
      }
    ]
  }

------------------------------------代理组。爪哇-----------------------------------

public class AgentGroup{

       public String id;
//Getter & Setters
}

------------------------------小组。爪哇-----------------------------------

public class Group{
   ** public List<AgentGroup> agentGroups;**
    public int order;
    public int duration;
//Getter & Setters
public void setAgentGroups(List<AgentGroup> agentGroups) {
this.agentGroups = agentGroups;
}
}

------------------------------------DistributionGroup。爪哇-----------------------------------

public class DistributionGroup{
    public String id;
    public String name;
    public String description;
    public boolean active;
    **public List<Group> groups;**
//Getter & Setters
public void setGroups(List<Group> groups) {
this.groups = groups;
}
}

正如您所见,Group是一个列表,agentGroup也是一个列表。 我很难填充/设置列表值,并将它们拼凑在一起,然后将组作为列表返回

我尝试过这样设置,但似乎不起作用: //函数调用

List<Group> groups=createDistributionGroup(teamIds,1)

功能:

public static Group createDistributionGroup(List<String> teamIds, int order) {
        Group grp= new Group();
        grp.setOrder(order);
        grp.setDuration(60);

        //Now How do I put AgentGroup in a list and return the group.       
        
        
        return grp;
        
    }

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    你的模型或多或少代表了你的json。这里有一个简单的测试,可以用来验证它

    String s = "{\n"
        + "    \"id\": \"2a0dd1fc\",\n"
        + "    \"name\": \"AABBCCDD\",\n"
        + "    \"description\": \"test\",\n"
        + "    \"active\": true,\n"
        + "    \"groups\": [\n"
        + "      {\n"
        + "        \"agentGroups\": [\n"
        + "          {\n"
        + "            \"id\": \"AXSNqSWSILMPnVvB-Cdc\"\n"
        + "          }\n"
        + "        ],\n"
        + "        \"order\": 1,\n"
        + "        \"duration\": 0\n"
        + "      },\n"
        + "      {\n"
        + "        \"agentGroups\": [\n"
        + "          {\n"
        + "            \"id\": \"AXZlGzTR4pYEiRgUOqOL\"\n"
        + "          }\n"
        + "        ],\n"
        + "        \"order\": 2,\n"
        + "        \"duration\": 60\n"
        + "      }\n"
        + "    ]\n"
        + "  }";
    
    DistributionGroup distributionGroup = new ObjectMapper().reader()
        .readValue(s, DistributionGroup.class);
    

    我确实对json做了一些更改,我将Id字段设置为id,将Groups字段设置为groups,注意大小写的区别。如果无法更改json,则必须向模型属性添加注释,让它们知道它们不符合bean规范。例如,如果希望在json中保留Id,则必须将@JsonAlias("Id")添加到类的id属性中,因此该字段如下所示:

    @JsonAlias("Id")
    public String id;
    

    要在createDistributionGroup方法中将AgentGroups添加到您的组中,它将如下所示:

    AgentGroup ag1 = new AgentGroup();
    ag1.setId("10");
    
    AgentGroup ag2 = new AgentGroup();
    ag1.setId("20");
    
    grp.setAgentGroups(Arrays.asList(ag1, ag2));