我有一个pojo,其中有4个字段需要填充。这些值来自一个对象的JsonArray(嵌套在一个更大的JSON对象中),其中有许多元素,如下所示-
"res":[
{"id":"irrelevant","val":"0"},
{"id":"irrelevant","val":"N"},
{"id":"irrelevant","val":"NO_THEFT"},
{"id":"first_needed_field","val":"0"},
{"id":"irrelevant","val":"N"},
{"id":"second_needed_field","val":"33342"},
etc etc etc
]
是否可以使用gson.fromJson()方法自动Map此JsonArray?
我使用了@SerializedName注解来MapPojo字段以匹配id,但是我一直无法弄清楚如何将数组转换为对象。我的尝试都没有成功,虽然我在这里发现了许多其他的gson问题,以及其他人有同样的错误,但我还没有发现有人故意尝试我正在尝试的东西。
2条答案
按热度按时间zmeyuzjn1#
这是相当模糊的,但我想我知道你想做什么。提示是不要做。
一定要使用Gson库提供的序列化和反序列化,但只需遍历List〈〉并以常规方式填充对象即可。
是的,这是可能的,但是你正在将 * 解释 * 引入 * 反射 *。正如你已经提到的,你正在Map一个更大的对象,我已经可以想象来自它的混乱代码。
4ktjp1zp2#
您可以使用自订的
TypeAdapter
来执行此动作。假设您有以下Pojo:
您应该在父类中如下声明字段
res
:然后,您必须像这样实现自定义的
TypeAdapter
:现在剩下要做的就是使用
GsonBuilder
注册这个TypeAdapter
来使用它:你应该可以走了。