我有以下json文件:
{
"authors":
[{"id":"author7",
"book":[
[
{
"value":{"pages":123}}]]},
{
"id": "author3",
"book": [
[
{
"value": {
"title": "LOTR"
}
},
{
"value": {
"boolean": false
}
},
],
[
{
"value": {
"pages": 350
}
},
{
"value": {
"boolean": false
}
},
],
[
{
"value": {
"boolean": false
}
},
{
"value": {
"pages": 150
}
},
]
]
},
}
我希望能够创建Author的对象,但在将Json文件与我创建的Java类进行映射时遇到了问题。
我知道,在用java类映射json文件时,Authors类应该有as字段。
public class Authors{
private String authorId;
private Book book;
}
课本应该是这样的
public class Book {
private List<Values> values
public Book() {
}
}
但是,类值又如何呢?
public class Values{
private int pages;
private Boolean bool;
private String title;
public Values() {
}
}
这是正确的映射方式吗?因为我看到,如果我创建一个值对象,它会要求我修改构造函数,或者为来自Json的每个不同对象创建一个新的构造函数
感谢您的阅读和帮助!
发布于 2021-04-02 17:48:23
简单的解决方法是通过类型'object‘来定义值,
public class Book {
private List<Object> values
}
这样,当JSON中不存在null值的属性时,您就不会遇到这样的问题。此外,JSON将被完全解析为一个对象,即使引入了新的属性(或者可能没有在values类下定义这些属性,就像您在上面所做的那样,导致这些属性没有映射到对象)。
然而,当你使用' object‘时,要注意使用这个解析对象的逻辑。尽管您可以像在JSON中一样从对象访问属性,但是您必须有条件地检查nessacary属性是否首先存在于每个逻辑上下文中,以避免可能出现的未定义的值错误。
https://stackoverflow.com/questions/66916311
复制相似问题