Java 将POJO序列化为JSON-输入参数化
我有4个POJO() 我有一个类文件,它将基于这些POJO()映射值 当我运行代码时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" :
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);
}