java - 从 JSON 创建动态对象

标签 java android json dynamic jackson

我有一个 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/

相关文章:

jquery - Angular JS : html table columns ordering not working

java - 如何检查节点是否没有兄弟节点?

java - 从 Activity 外部捕获 onRequestPermissionsResult()

java - 如何从 2 个不同的数组列表中对数组列表进行排序?就像两个数组列表,性别和学生。如何按性别查看学生详细信息

android - 我点击了我的清除按钮,但它不起作用

android - 按下按钮时关闭虚拟键盘

php - JSON 解析 : from PHP5 ( which attacks a database: mySQL ) ios5 iphone

javascript - Python json.dump() 到 javascript JSON.parse()

java - 用不同的 4 字节数替换 Long 数中的最后 4 个字节

java - 运行 Junit 时出错 - java.lang.NoClassDefFoundError : gherkin/IGherkinDialectProvider