我之前的问题并没有真正得到任何结论,也许我没有问正确的事情,或者说它太详细了。
我现在的基本问题是,如何将具有一个类名的JSON对象反序列化为具有不同类名的Java对象?
例如,服务器发送/期望的JSON类是“18”(我对此没有控制权)。我的Java类不能是“18”,所以它是“_18”。
即使使用不同的命名策略,简单地执行新的Gson()。fromJson()也无济于事; _18对象始终为null。我已经读过有关类型适配器和不同注释的内容,但我仍然不清楚如何处理这个问题。似乎最明智的方法@SerializedName,显然不能用于类本身,只是字段成员。
如何将一个名为18的类的JSON对象反序列化为一个名为_18的Java类(或者,更好的是,如果可能的话,我可以给该类一个真名)?
示例JSON,请求:
"18": {
"field1": "value1",
"field2": "value2",
"field3": "value3"
}
答案 0 :(得分:2)
首先 - JSON没有类的概念 - 它是一个对象的字符串表示。 所以,你的例子只是一个格式错误的JSON。它必须像:
{"18":
{
"field1": "value1",
"field2": "value2",
"field3": "value3"
}
}
这是有效的JSON对象,其字段为“18”,而另一个类依次为field1
,field2
和field3
属性。
所以,如果服务器像你的show一样返回JSON字符串 - 要解析它,你必须用{}包围它,然后你的Java类将具有“18”的属性,因为你想为{{1}命名为Java注释。
请参阅下面的示例测试用例:
@SerializedName