Java 将POJO序列化为JSON-输入参数化

Java 将POJO序列化为JSON-输入参数化,java,arrays,json,serialization,jackson,Java,Arrays,Json,Serialization,Jackson,我有4个POJO() 我有一个类文件,它将基于这些POJO()映射值 当我运行代码时 public static void main(String[] args) throws Exception { Input user = new Input(); user.setId("0001"); user.setType("donut"); user.setName("cake"); user.setPpu(0.55); 下面是我的输出 { "id" :

我有4个POJO()

我有一个类文件,它将基于这些POJO()映射值

当我运行代码时

public static void main(String[] args) throws Exception {
    Input user = new Input();
    user.setId("0001");
    user.setType("donut");
    user.setName("cake");
    user.setPpu(0.55);
下面是我的输出

{
  "id" : "0001",
  "type" : "donut",
  "name" : "cake",
  "ppu" : 0.55,
  "batters" : null,
  "topping" : [ ]
}
但是,我希望我的输出是

{ "id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters": 
{ "batter": [{ "id": "1001", "type": "Regular" }, 
{ "id": "1004", "type": "Devil's Food" } ] }, "topping": [{ "id": "5001", 
"type": "None" }, { "id": "5004", "type": "Maple" } ] }
我不知道如何即兴编写代码,以便像预期的那样打印输出,谢谢


预期值:面糊、浇头值也应使用以下值:

public static void main(String[] args) throws Exception {
    Input user = new Input();
    user.setId("0001");
    user.setType("donut");
    user.setName("Cake");
    user.setPpu(0.55);

    // Add Regular batter
    Batter batter1 = new Batter();
    batter1.setId("0001");
    batter1.setType("Regular");

    // Add Devil's Food batter
    Batter batter2 = new Batter();
    batter2.setId("1004");
    batter2.setType("Devil's Food");

    Batters batters = new Batters();
    batters.setBatter(Arrays.asList(batter1, batter2));
    user.setBatters(batters); 

    // Add toppings
    Topping topping1 = new Topping();
    topping1.setId("5001");
    topping1.setId("None");

    Topping topping2 = new Topping();
    topping2.setId("5004");
    topping2.setId("Maple");

    users.setTopping(Arrays.asList(topping1, topping2));

    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);

    String json = mapper.writeValueAsString(user);
    System.out.println(json); // expected string

你需要添加所需的面糊和浇头user@mc20是的,但是您将无法设置为击球手的user.id,可以吗?这就是我怀疑用户是否属于
Input
类型的原因,因为
Input
有面糊,您可以创建一个列表,并使用setterPlz添加面糊。请向我解释为什么
batters
会保存有
batter
的对象,即实际面糊的数组?上述方法对于浇头来说效果非常好,但是对于击球手部分
击球手击球手=新击球手();batters.set(Arrays.asList(batter1,batter2));用户。电池组(电池组)
I get error“类型Batters的方法集(列表)未定义”使用setBatter而不是setYes,我没有注意到,这是perfectNop
类型Batters中的方法setBatter(列表)不适用于参数(Batter[])
方法setTopping(列表)在类型中,输入不适用于参数(Topping[])
Nope@wilfredcool007,它是适用的。为了您的理解,我在我的博客中分享了全部代码
public static void main(String[] args) throws JsonProcessingException {
    Javabelazy user = new Javabelazy();
    user.setId("0001");
    user.setType("donut");
    user.setName("Cake");
    user.setPpu("0.55");
    Batter batter1 = new Batter();
    batter1.setId("0001");
    batter1.setType("Regular");
    Batter batter2 = new Batter();
    batter2.setId("1004");
    batter2.setType("Devil's Food");
    Batters batters = new Batters();
    Batter[] batter = new Batter[2];
    batter[1] = batter1;
    batter[0] = batter2;
    batters.setBatter(batter );
    user.setBatters(batters); 
    Topping topping1 = new Topping();
    topping1.setId("5001");
    topping1.setId("None");
    Topping topping2 = new Topping();
    topping2.setId("5004");
    topping2.setId("Maple");
    Topping[] topping = new Topping[2];
    topping[0] = topping1;
    topping[1] = topping2;
    user.setTopping(topping );
    ObjectMapper objectmapper = new ObjectMapper();
    String json = objectmapper.writeValueAsString(user);
    System.out.println(json);
}