我有一个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相比,杰克逊可以做到这两者,读取特定值并生成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":
{ ... },
}
标签:jackson,dynamic,json,java,android
来源: https://codeday.me/bug/20191118/2029226.html