【问题标题】:Separate array from json and store to db从 json 中分离数组并存储到 db
【发布时间】:2015-02-27 04:00:46
【问题描述】:

我有一个来自网络服务器的 json 如下:

 "data": {
        "classes": [
            {
                "subject_name": "Chemistry",
                "class_id": "48",
                "class_division": "A",
                "map_id": "44",
                "teacher_name": "Principal",
                "subject_id": "7",
                "teacher_id": "1",
                "class_name": "1",
                "subject_code": "CHE"
            },
            {
                "subject_name": "Biology",
                "class_id": "48",
                "class_division": "A",
                "map_id": "33",
                "teacher_name": "Principal",
                "subject_id": "8",
                "teacher_id": "1",
                "class_name": "1",
                "subject_code": "BIO"
            }
        ],
        "token": "4A48B90CF31D582FAB73D283FA72380E"

我想在数据库中存储班级信息。在 classes 数组中,有两个对象可能会根据输入而有所不同。那么如何将数组中的每个字段分开。

【问题讨论】:

  • 您可以在classes数组中获取每个json对象并将其存储在您的数据库中
  • json parsing in android太简单了,你可以自己试试,有疑问可以来SO解释。
  • 仅供参考,SO 是用来讨论的论坛,它不会为您提供完整的教程。
  • 好吧,我自己试试。

标签: android arrays json android-json


【解决方案1】:

假设您将该 json 保存在名为 jsonResponse 的 String 对象中,如下所示:

JSONObject json = new JOSNObject(jsonResponse);

JSONArray classes = json.getJSONArray("classes");

for (int i=0;i<classes.length();i++){

    JSONObject classesObj = classes.getJSONObject(i);

    /**
     * Next you would process your classesObj as you require.
     * Remember classesObject is a JSONObject
     */

}

【讨论】:

    【解决方案2】:

    所以我猜你想检索信息,也就是解析那个 json 数据对象。 使用第三方工具(如 Jackson 和 Gson)有多种不同的方法,这是最好的方法,但更复杂。所以从 JSONObject 和 JSONArray 开始。

    将 json 响应转换为 JSONObject。

    JSONObject jsonObject=new JSONObject(response);
    

    获取类数组

    JSONArray jsonArray= jsonObject.getJSONArray("class");
    

    遍历jsonArray并获取每个对象:

    for(int i=0; i<jsonArray.length(); i++){
       JSONObject innerJson = jsonArray.getJSONObject(i);
       String subject_name = innerJson.get("subject_name");
       ....
       //write to database
    }
    

    在第一次迭代中,您将获得第一个对象,然后您可以获取其字段并写入数据库,在下一次迭代中,您将获得第二个对象。

    此方法只是演示,有效但无效

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 2020-05-15
      • 2016-02-29
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多