【问题标题】:Creating a while loop which insert json data into sqlite (Android)创建一个将json数据插入sqlite(Android)的while循环
【发布时间】:2015-07-20 17:54:33
【问题描述】:

基本上,我正在尝试将应用收到的 JSON 对象插入 SQLite 数据库。当我以连续 ID 命名我的 JSON 对象时,我想创建一个 do while 循环来计算它接收到的对象数量,并在接收到最大对象时停止。

我的代码如下:

    mydb.StoreMemberInfo(Integer.valueOf(json.getString(TAG_MEMBER_ID).toString()), json.getString(TAG_MEMBER_NAME), Integer.valueOf(json.getString(TAG_MEMBER_POINT).toString()));
                do {
                    mydb.StoreShopInfo(Integer.valueOf(json.getString(TAG_SHOP_ID + ++shop_ID_counter).toString()), json.getString(TAG_SHOP_NAME + ++shop_name_counter));
                }
                while(TAG_SHOP_ID + shop_ID_counter != null);

我的应用应该接收的 JSON 对象如下:

    {"success":1,"message":"Login successful","member_id":"1","member_name":"Peter","member_point":"1000","shop_ID_1":"1","shop_name_1":"Chatime","shop_ID_2":"2","shop_name_2":"Beard Papa","shop_ID_3":"3","shop_name_3":"CoolBlog","friend_ID_1":"2","friend_name_1":"James","friend_ID_2":"3","friend_name_2":"Mary"}

循环应该在到达 shop_ID_4 后停止,但因为它不存在,但代码处于等待状态并且不处理其他代码。我该怎么办?

【问题讨论】:

  • 我希望循环在检测到不存在这样的 JSON 对象时结束,我认为 null 是一个合理的条件。结果不是。
  • 我不明白。它应该如何理解 不存在 JSON 条件?
  • 另外,就我个人而言,如果我知道应该返回的确切值,我会直接为它们制作一个解析器。
  • 所以基本上我想要实现的是当有许多 JSON 对象传递给应用程序时,我希望它将确切数量的对象插入数据库并在完成后停止。在此示例中,有 3 个商店 ID,我想创建一个循环来读取 3 个 ID 并在之后停止。
  • @AshleyAlvarado 事情是值不是恒定的。这取决于数据库中的数据。这就是我想使用循环的原因。

标签: android json sqlite do-while


【解决方案1】:

我相信可以做你需要的事情。只需复制并粘贴我几个月前所做的事情即可。

 public List<LocationData> parseLocatonData(String response)
        {
            String result = response;
            mLocationData = new ArrayList<LocationData>();
            try {

                JSONObject jsonObject = new JSONObject(result);
                Boolean status = jsonObject.getBoolean("status");
                if (status) {
                    JSONObject jObject = new JSONObject();
                    jObject = jsonObject.getJSONObject("results");
                    Iterator<String> keys = jObject.keys();

                    while (keys.hasNext()) {
                        LocationData locationData = new LocationData();
                        String key = keys.next();
                        JSONObject innerJObject = jObject.getJSONObject(key);

                        locationData.setLocationName(innerJObject.getString("cName"));
                        locationData.setCity(innerJObject.getString("cCity"));
                        locationData.setAddress(innerJObject.getString("cAddress"));
                        locationData.setFieldName(innerJObject.getString("cField"));
                        locationData.setState(innerJObject.getString("cState"));
                        locationData.setFieldUrl(innerJObject.getString("cWebsite"));
                        locationData.setZip(innerJObject.getString("cZip"));

                        mLocationData.add(locationData);
                    }
                    return mLocationData;
                }

            } catch (JSONException e) {
                Toast.makeText(mContext, "Error getting Location Info", Toast.LENGTH_SHORT).show();
                LogUtils.LOGI(TAG, e.toString());
            }
            return null;
        }

主要是key iterator,让你遍历列表

【讨论】:

  • 我会试一试的!非常感谢你的帮助! :)
猜你喜欢
  • 1970-01-01
  • 2014-04-16
  • 2020-05-13
  • 1970-01-01
  • 2018-07-18
  • 2019-01-21
  • 2013-03-09
  • 1970-01-01
  • 2015-12-22
相关资源
最近更新 更多