Jackson Json:如何将数组转换为JsonNode和ObjectNode?

2022-09-01 08:05:31

给定员工和公司等级

Company
{
    String companyName;
}

Employee
{
    String employeeName;
}

和我的代码如下

List<Employee> e = new ArrayList<Employee>();
.....
.....

我希望我能得到这样的结果

{
    "company":{ 
                "companyName":"cName",
                "Employee":[
                    {"employeeName":"myName1"},
                    {"employeeName":"myName2"},
                    {"employeeName":"myName3"}
                ]
              }
}

这是一个简单的问题,但是我相当困惑的东西....特别是Gson和json....

请不要提出其他库,我强制需要这个库才能工作。由于某些情况,这门课不是我想要的。

Company
{
    String companyName;
    List<Employee> employees;
}

因此,我需要手动放置它,并序列化为json字符串。

编辑:@Sotirios Delimanolis类声明是设计类之间关系的正确方法。但是,这不是我想要的。

@hsluo的答案是正确的!和@Sotirios德利马诺利斯提到的一样。完全满足这个问题。

我确实找到了另一种方法来做到这一点,使用哈希映射

HashMap k = new HashMap();
List<employee> y = new ArrayList<employee>();
y......
k.put("records", y);
k.put("total", total);

然后回到@Responbody,结果与@hsluo回答的结果完全相同。

感谢@Sotirios德利马诺利斯,@hsluo帮助我。


答案 1
ObjectMapper mapper = new ObjectMapper();
List<Employee> e = new ArrayList<Employee>();
ArrayNode array = mapper.valueToTree(e);
ObjectNode companyNode = mapper.valueToTree(company);
companyNode.putArray("Employee").addAll(array);
JsonNode result = mapper.createObjectNode().set("company", companyNode);

答案 2
List<String> yourList = new ArrayList<>();
((ObjectNode) someNode).set("listname", this.objectMapper.valueToTree(yourList));