Vraag Jackson Json: hoe array naar JsonNode en ObjectNode converteren?


Gegeven werknemer en bedrijfsklasse

Company
{
    String companyName;
}

Employee
{
    String employeeName;
}

en mijn code zoals het volgende

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

ik wou dat ik dit resultaat zo kon krijgen

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

Het is een eenvoudige vraag, maar ik verward nogal wat .... Vooral Gson en Json ....

Stel alstublieft geen andere bibliotheek voor, die ik VERPLICHTE BEHOEFTE deze bibliotheek aan het werk. En vanwege een bepaalde omstandigheid, deze klas IS NIET ik wilde.

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

Daarom heb ik nodig HANDMATIG zet het, en serialize naar json string.

Bewerkt:


13
2018-04-10 03:19


oorsprong


antwoorden:


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

29
2018-04-10 04:15



Jackson heeft geen JsonObject klasse voor zover ik kan vertellen.

Waarom maak je niet gewoon een POJO aan die een bevat List<Employee>

class Employees {
    @JsonProperty("Employee")
    private List<Employee> employees;

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }
}

en serialiseer het met een ObjectNode.

Employees e = new Employees();
List<Employee> employees = new ArrayList<Employee>();
e.setEmployees(employees);
ObjectNode objectNode = mapper.valueToTree(e);

1
2018-04-10 03:27



Je kunt Jackson gebruiken ObjectNode's put en putArray graag willen

import com.fasterxml.jackson.databind.node.ObjectNode;
ArrayList<ObjectNode> employee = new ArrayList();
for(int i = 1; i < 4; i++){
  ObjectNode em = Json.newObject();
  em.put("companyName", "cName" + i);
  employee.add(em);
}
ObjectNode company = Json.newObject();
company.put("companyName", "cName");
company.putArray("employee").addAll(employee);
return Json.newObject().put("company", company);

1
2018-01-27 05:32