【发布时间】:2016-10-02 13:30:34
【问题描述】:
我有一个 Android 应用程序,它接收 JSON 格式的字符串。
JSON 结构包含一组不同类型的 JSON 对象。 我将为每种类型创建一个类,并希望借助 JSON 框架直接从 JSON 实例化对象。
为了简单起见,让我们考虑以下示例:
我们有两个 Java 类:
public class A
{
public String a1 = "";
public int a2 = 0;
}
public class B
{
public double b1 = 0;
public double b2 = 0;
public double b3 = 0;
}
也不是,例如我们有一个 JSON 数组进来
[
{
"a1": "Teststring",
"a2": 12
},
{
"b1": 3,
"b2": 4,
"b3": 5
},
{
"a1": "Teststring2",
"a2": 24
}
]
我不知道 JSON 对象将进入哪些、多少或以什么顺序。但我可以修改它们的 JSON 表示。
我能想到的一个解决方案:
据我阅读有关框架的信息,Jackson 与 GSON 相比,能够做到这两点,读取特定值并生成 Java 实例。 所以我可以向 JSON 对象添加类型信息:
[
{
"type": "A",
"a1": "Teststring",
"a2": 12
},
{
"type": "B",
"b1": 3,
"b2": 4,
"b3": 5
},
{
"type": "A",
"a1": "Teststring2",
"a2": 24
}
]
比从 type 中读取值,然后从中生成正确的对象。
你觉得我的方法怎么样?我的问题有通用的解决方案吗?
【问题讨论】:
-
你对发送的json对象有控制权吗?我的意思是,如果它是发送 json 响应的服务器,您是在控制服务器还是已经在运行服务器?
-
我正在控制服务器。
-
然后,就像你说的提到你在 json 对象本身中发送的对象的类型。既安全又减少客户端的工作量。
标签: java android json dynamic jackson