我需要使用GSON将JSON对象映射到类,这里是JSON对象:
{
"protocols": [
[ "https", 39 ],
[ "http", 1 ]
],
...
}
通常,如果指定了实体名称,则很容易做到这样的事情:
{
"protocols": [
[ "name":"https", "count":39 ],
[ "name":"http", "count":1 ]
],
...
}
class ProtocolItem {
@SerializedName("name")
String protocolName;
@SerializedName("count")
int count;
}
但是,由于在这种情况下没有指定实体名称,我不知道如何为此进行映射。如果您熟悉此案,请为我指点。
由于
答案 0 :(得分:0)
与第一个例子不同,
[ "name":"https", "count":39 ],
是无效的JSON,因为您可以使用[1, 2]
指定不使用任何名称的数组,也可以使用{"x": 1, "y": 2}
使用“实体名称”作为键来指定地图。所以解决方案很简单:
{
"protocols": [
[ "https", 39 ],
[ "http", 1 ]
],
}
是具有单个键和值的对象,该值是对象数组的数组。您可以将其映射为
class All {
Object[][] protocols;
}
您必须在此处使用Object
,因为它需要接受字符串和整数。您可以使用List
s。
我想,您更愿意将其序列化为
class All {
Map<String, Integer> protocols;
}
这也是可能的,但你需要一个TypeAdapter。第一个链接的示例清楚地显示了如何执行此操作(从beginArray
开始,在循环测试JsonToken.BEGIN_ARRAY
中执行nextString
和nextInt
等。)