【发布时间】:2014-08-26 21:42:41
【问题描述】:
我正在尝试获取 JSON 数据并将这些数据插入 SQLite 数据库。 JSON url中有很多数据。但是,我的应用只获得最后一个值。
这是我获取 JSON 数据的代码
protected ArrayList<HashMap<String, String>> doInBackground(Void... voids) {
ServiceHandler sh = new ServiceHandler();
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObject = new JSONObject(jsonStr);
restaurants = jsonObject.getJSONArray(TAG_RESTAURANTS);
for (int i = 0; i < restaurants.length(); i++) {
JSONObject c = restaurants.getJSONObject(i);
JSONObject restaurant = c.getJSONObject("Restaurant");
id = restaurant.getString("id");
name = restaurant.getString("name");
image = restaurant.getString("image");
description = restaurant.getString("description");
address = restaurant.getString("address");
phone = restaurant.getString("phone");
//Inserting json data into SQLite db
db.insertIntoRestaurantsTable(id,name,image,description,address,phone);
Log.d("Insert:", "Inserting....");
HashMap<String, String> jsonRestaurantData = new HashMap<String, String>();
jsonRestaurantData.put("id", id);
jsonRestaurantData.put("name", name);
jsonRestaurantData.put("image", image);
jsonRestaurantData.put("description", description);
jsonRestaurantData.put("address", address);
jsonRestaurantData.put("phone", phone);
arraylist.add(jsonRestaurantData);
return arraylist;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return null;
}
这是我的 JSON 示例
{
restaurants: [
{
Restaurant: {
id: "5",
name: "Dummy Name 5",
image: "443366291404304960DSCF6532.JPG",
description: "Dummy Description 5",
address: "Dummy Address 5",
phone: "1234"
}
},
{
Restaurant: {
id: "4",
name: "Dummy Name 4",
image: "867352851406598423IMG_0433.JPG",
description: "Dummy Description 4",
address: "Dummy Description 4",
phone: "01111222"
}
},
{
Restaurant: {
id: "3",
name: "Dummy Name 3",
image: "6065339moon.jpg",
description: "Dummy description 3",
address: "Dummy Description 3",
phone: "092131232"
}
},
调试后,只有以下最新的数据插入到 SQLite 中。其他的都剩下了。
Restaurant: {
id: "5",
name: "Dummy Name 5",
image: "443366291404304960DSCF6532.JPG",
description: "Dummy Description 5",
address: "Dummy Address 5",
phone: "1234"
}
},
我的循环获取 JSON 数据有问题?? 请帮帮我。
这是我的数据库代码。
public void insertIntoRestaurantsTable(String restaurant_id, String name, String image, String description, String address, String phone )
{
SQLiteDatabase db = this.getWritableDatabase();
insertValues.put("_id",restaurant_id);
insertValues.put("_name",name);
insertValues.put("_image",image);
insertValues.put("_description",description);
insertValues.put("_address",address);
insertValues.put("_phone", phone);
db.insert(RESTAURANT_TABLE_NAME, null, insertValues);
}
【问题讨论】:
-
请显示
db.insertIntoRestaurantTable()的代码。您似乎每次插入时都会覆盖该条目,而不是创建一个新条目。 -
用 insertIntoRestaurantTable() 更新
-
问题出在别处。看我的回答。