Android / Java常见的json导入界面

时间:2012-09-06 20:50:21

标签: java android json interface import

我正在编写一个能够将ActivityFragment的当前状态导出到JSON文件的Android应用程序,该文件具有以下通用格式:

{
  "data": {
    "result": {
      <content depends on specific class>
    },
    "input": {
      <content depends on specific class>
    }
  },
  "identifier": <identifier depends on specific class>,
  "version": 1
}

这意味着具有导出能力的Activities / Fragments填写标记内容,实现我称为“可导出”的接口,整个导出函数调用接口中定义的方法。这是一个非常好的直接解决方案。

到目前为止一切顺利。现在我想做出相反的方向。我想加载一个文件,并根据标识符的内容调用相应的Activity / Fragment

阅读“输入”和“结果”的内容应通过Activity / Fragment本身的方法完成。

不幸的是,对于我来说,如何以优雅的方式解决这个问题并不明显。 最好的方法是什么?解决方案应尽可能抽象,以便可以轻松扩展。

3 个答案:

答案 0 :(得分:0)

这可能有很多不同的答案。 Google有一个名为GSON的库,它可以自动从Java类读取和写入JSON数据。如果您不想使用库,则可以使用Java反射。

答案 1 :(得分:0)

JSONObject js = new JSONObject(“data”);

JSONObject jSObject1 = js.getJSONObject(“result”); JSONObject jSObject2 = js.getJSONObject(“input”); 等等 我希望我理解你的问题

答案 2 :(得分:0)

if-else将是最简单的解决方案,但如果它不够抽象,请使用Abstract Factory pattern

创建ExportableFactory界面,定义创建Exportable的方法,以及ActivityFragment此界面的实现。然后创建一个Map<String, ExportableFactory>,将identifier的可能值映射到正确的工厂。然后致电:

Exportable exportable = factoryMap.get(identifier).createExportable(data);

这样,如果你想添加Exportable的第三个实现,你只需创建ExportableFactory的相应实现并将其添加到地图中,而无需修改调用函数。 / p>