我有一个JSON,其结构如下:
{
"firstProperty": true,
"thisIsAString": "hi",
"myList": [
{"myBool": true},
{"myBool": false, "otherfield": true}
]
}
myList
是目标类中的List<MyClass>
。此MyClass
只有myBool
字段,该字段可使数组的第一个元素正确反序列化,但不幸的是,反序列化第二个元素会导致反序列化失败,并显示错误消息Unknown property 'myBool' for class my.package.MyClass at JSON path $.otherfield
。
有没有办法忽略JSON中不存在于反序列化的目标类中的字段?也许是因为嵌套的对象?
我已经尝试过添加一个自定义类型适配器,如seen here,但它甚至没有调用该方法(目标类是一个记录,这就是为什么我必须使用第三方库com.github.Marcono1234:gson-record-type-adapter-factory
来反序列化它)
2条答案
按热度按时间ilmyapht1#
AFAIK,
Gson
在反序列化时会自动忽略未知字段。因此,我假设您已经创建了这两个类,如下所示:然后,您可以序列化JSON字符串,如下所示:
控制台输出:
我的结果{第一个属性=真,这个是字符串='hi',我的列表=[我的类{我的布尔值=真},我的类{我的布尔值=假}]}
wyyhbhjk2#
我发现了这个问题,我用来反序列化为记录的第三方库有一个TypeAdapterFactory,它有一个忽略未知属性的选项,默认设置为false。
启用此选项将产生预期的输出。