我有一个 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 表示。
我能想到的一种解决方案:
据我阅读框架的了解,与 GSON 相比,Jackson 能够做到这两点,读取特定值并生成 Java 实例。 所以我可以将类型信息添加到 JSON 对象:
[
{
"type": "A",
"a1": "Teststring",
"a2": 12
},
{
"type": "B",
"b1": 3,
"b2": 4,
"b3": 5
},
{
"type": "A",
"a1": "Teststring2",
"a2": 24
}
]
而不是从类型中读取值,然后从中生成正确的对象。
你觉得我的方法怎么样?是否有针对我的问题的通用解决方案?
最佳答案
为什么不将所有内容都放在一个数组中,为什么不使用 json 对象并将对象作为成员添加到其中,并使用一个通用名称(可以说是 - 类型和一些索引)。
{
"A0":
{ ... },
"B0":
{ ... },
"A1":
{ ... },
}
关于java - 从 JSON 创建动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598162/