【发布时间】:2021-01-22 21:39:06
【问题描述】:
我正在尝试解组以下 JSON
[{
"myId": "12851cb3087f51b4fb392b1fea36eef9508",
"secondaryId": "787CFD4A-6B1D-4415-AD56-D075B535B890",
"my_key": "keyABCD",
"email": ""
}, {
"myId": "12851cb3087f51b4fb392b1fea36eef9508",
"secondaryId": "BFACD2F0-F5EF-4F05-AA6B-00E18CA907EF",
"my_key": "keyABCD",
"email": ""
}, {
"myId": "12851cb3087f51b4fb392b1fea36eef9508",
"secondaryId": "567DE8C0-B5B5-4961-B97A-A2DD374AEED1",
"my_key": "keyABCD",
"email": ""
}, {
"myId": "12851cb3087f51b4fb392b1fea36eef9508",
"secondaryId": "78a52d90-be6c-4d80-b79d-0e256028ba01",
"my_key": "keyABCD",
"email": "test@email.com"
}, {
"myId": "12851cb3087f51b4fb392b1fea36eef9508",
"secondaryId": "aeb148e7-fc88-4a71-8baa-63b6528e463e",
"my_key": "keyABCD",
"email": ""
}]
并且已经有一个具有上述 json 的 bufferreader (myBufferedReader)。 POJO
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@ToString
@AllArgsConstructor
public class MyPOJO {
@Getter @Setter private String myId;
@Getter @Setter private String secondaryId;
@Getter @Setter private String my_key;
@Getter @Setter private String email;
}
关于使用下面的映射器 -
ObjectMapper mapper = new ObjectMapper();
List<MyPOJO> eventList = mapper.readValue(myBufferedReader.readLine(),mapper.getTypeFactory().constructCollectionType(List.class, MyPOJO.class));
出现错误。请帮忙。 - (不存在像默认构造一样的创建者):无法从对象值反序列化(没有基于委托或属性的创建者)
如果上述方法不正确,请建议从 bufferreader 读取并创建使用 json 映射的 pojo 类列表的最佳方法。
问候, 丹
【问题讨论】:
-
我发布了一个使用库
javax.json.*的答案...它不使用lombok。我可以看到lombok做了什么,但我不知道您打算使用多少 JSON。自动构建 Java POJO 似乎有点过头了,但我不是 JSON + Java 方面的专家。这个链接的答案(下面)讨论了使用lombok将 JSON 转换为POJO- 尽管我看到你的问题是你有一个JsonArray有几个要解析的 POJO 实例...Lombok Answer -
这里有一些答案声称您需要
Lombok和JacksonJSON Parser - 这是一个不同的 JSON Parser 。我真的相信,如果您有许多 JSONString's要解析,并且有许多不同类型的Object's...@987654322,那么这种类型的东西只有有价值 @, Lombok + Jackson JsonArray -
将
@NoArgConstructor也添加到您的班级顶部