【问题标题】:Store Json from httpResponse into Android SQLite Database将来自 httpResponse 的 Json 存储到 Android SQLite 数据库中
【发布时间】:2014-06-05 21:25:41
【问题描述】:

如何轻松地将大量数据存储到 SQLite 数据库中? 我读到我可以使用 Gson 来解析这些数据,但我不确定该怎么做。 我已经创建了一个 SQLiteHelper 和必要的类,我只是纠结于如何解析这些数据。
我得到一个返回大量 Json 的 httpResponse,如下所示:

 "objs": {
    "ptoStatus": [
    {
    "id": 1,
    "modifieddate": "2006-07-06 05:35:38",
    "description": "Submitted",
    "name": "Submitted",
    "createddate": "2007-07-06 09:43:38"
    },
    {
    "id": 2,
    "modifieddate": "2006-07-06 09:35:38",
    "description": "Approved",
    "name": "Approved",
    "createddate": "2009-07-06 09:35:38"
    },
    {
    "id": 3,
    "modifieddate": "2009-07-06 09:50:38",
    "description": "Denied",
    "name": "Denied",
    "createddate": "2009-07-06 09:35:38"
    }
    ],
    "alertStates": [
    {
    "id": 1,
    "createddate": "2008-02-11 09:11:57",
    "modifieddate": "2008-02-11 09:11:57",
    "description": "Sending"
    },
    {
    "id": 2,
    "createddate": "2008-02-11 09:11:57",
    "modifieddate": "2008-02-11 09:11:57",
    "description": "Response"
    },
    {
    "id": 3,
    "createddate": "2008-02-11 09:11:57",
    "modifieddate": "2008-02-11 09:11:57",
    "description": "Acknowledge"
    },

//etc....

【问题讨论】:

  • 你必须谷歌搜索:bit.ly/1mebKqu
  • @PratikButani 我可以轻松解析和存储单个 json 对象,但这里我有一个大约 7 个对象的数组,这使得这有点复杂
  • @israel_hill 简单循环。基本上你有一个对象数组。获取JSONarray objs 并在objs.length 的循环中为单个数组执行您将执行的操作。

标签: android sqlite


【解决方案1】:

Retrofit 是一款出色的 REST 客户端,适用于 Android 应用程序。在这里您可以找到文档: http://square.github.io/retrofit/

您可以使用它来获取 http 响应,但使用它您可以将所有响应数据转换为 Java 对象(默认情况下,它使用 Googles Gson 解析器)

对于特定的 json,您需要创建如下内容:

public class ObjsResponse {
  public MyObjects data;

  public class MyObjects {
    List<States> ptoStatus;
    List<AlertStates> alertStates;
  }
}

并且您存储在数据库中的模型只需要具有相同的名称(或者您可以对 json 中的不同键使用注释,但这都记录在 Gson 中),如下所示:

public class States {
  int id;
  String modifieddate; //here you can use some sort of DateTime too (for example jodatime)
  String description;
  String name;
  String createddate;
}

在这里你可以使用数据库注释或任何你喜欢的东西。

在此之后,您只需将此 ObjsResponse 类设置为改造接口的返回参数(在上面的链接中描述),将其初始化,然后您可以调用此方法。我没有写下漏洞,在文档的简介部分基本上就是你所需要的;)

【讨论】:

  • 谢谢!听起来是一个非常有用的工具。
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多