假设我有一个班级:
class A {
List<C> b;
}
class C {
String str;
}
我有一个json字符串,其中包含以下内容:
{
"b": [
{ ... },
{ ... }
]
}
所以做以下工作会很好:
Gson gson = new Gson();
gson.fromJson(jsonString, A.class);
但是现在我有一个更复杂的案例,我使用相同的json来提供更多数据,但我仍然想使用gson作为它非常好的库。 所以现在我的json如下:
{
"b": [
{ ... },
{ ... }
],
"c": 7
}
是否可以告诉gson对象忽略它无法评估的内容?
那么它只会从我的A
课程或我使用@SerializedName
指定的内容中获取它所知道的内容?
我使用JSONObject
了解更原始的方式,但为了继续使用Gson
,我必须将"b"
嵌套在另一个级别才能使其正常工作,因为它需要一个带有一个对象数组的对象,使用JSONObject.get("b")
将只给我一个数组。
UPDATE,更具体地说,我添加了一个我尝试使用的json对象
这个json是我开始使用的,只是一组b
&#39; s,如果我运行它可以正常工作:
{
"b": [
{
"str": "first string"
}
]
}
这个json是一个更复杂的情况,我有一个b
的列表,这正是gson需要的,但也是另一个不是我的A
类特有的参数,这就是我希望gson忽略并表现得像第一种情况。
{
"b": [
{
"str": "first string"
}
],
"c": 7
}
答案 0 :(得分:0)
我们总是在解决这类问题的方法是定义占位符类,它能够获取数据,所以:
class A {
List<C> b;
}
class C {
String str;
}
class ContainerA extends HashMap<String, A>{
}
然后你做:
Gson gson = new Gson();
Map<String, A> javaMap = gson.fromJson(jsonString, ContainerA.class);
这是一种解决方法,但对于带有GsonHttpMessageConverter
的Gson和Spring适用于Android的工作正常。