gpt4 book ai didi

java - 如何为 Java 中的每个类字段创建 JSON 对象列表

转载 作者:行者123 更新时间:2023-11-30 06:08:46 25 4
gpt4 key购买 nike

我可以将通用对象作为我的类之一的字段,例如

public class Class1<T> {
List<T> genericObjects;
}

这个对象看起来像这样:

private int id;
private String name;

或者像这样:

private int id;
private int childId;

我需要发送一个 JSON,其中包含属性列表,并且每个属性都应作为对象呈现。

所以它应该看起来像这样:

[
{
"id": 1
},
{
"name": "name"
}
]

等等。对于通用且可以包含一个或多个不同属性的对象,是否有一种方法可以干净地实现这一点?对于普通类,而不是泛型类?

最佳答案

用途:

@JsonTypeInfo

正如我在这里所做的那样(请注意,我省略了所需的 getter 和 setter):

class Main {

public static void main(String[] args) throws JsonProcessingException {
Class1<A> a = new Class1<>();
a.genericObjects = Collections.singletonList(new A(1, "A"));

Class1<B> b = new Class1<>();
b.genericObjects = Collections.singletonList(new B(2, "B"));

System.out.println(new ObjectMapper().writeValueAsString(a));
System.out.println(new ObjectMapper().writeValueAsString(b));
}

}

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
class Class1<T> {
List<T> genericObjects;
}

class A {

int id;
String name;

A(int id, String name) {
this.id = id;
this.name = name;
}
}

class B {

int id;
String childId;

B(int id, String childId) {
this.id = id;
this.childId = childId;
}
}

@JsonTypeInfo' 有多种用法。我选择了class approch`,它向数组中的每个元素添加一个特殊标识符“@class”和具体类全名。

关于java - 如何为 Java 中的每个类字段创建 JSON 对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50694763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com