Как сохранить обновленный ответ JSON в базе данных sqlite Android?

#android #json #sqlite #android-sqlite

#Android #json #sqlite #android-sqlite

Вопрос:

Итак, здесь я получаю ответ Json, который содержит список таблиц и соответствующие данные. Я вручную создал базу данных main.sqlite со всеми таблицами, теперь я хочу сохранить данные ответа внутри соответствующей таблицы.Я пытаюсь найти оптимизированный способ его достижения, потому что через каждые 24 часа я буду получать обновленный ответ, который мне придется снова сохранять. Пожалуйста, помогите мне с этим.Заранее спасибо.

Ниже приведен пример моего ответа JSON

 {
"main": {
    "tableOne": [{
        "colOne": 1,
        "colTwo": "two"
    }, {
        "colOne": 3,
        "colTwo": "three"
    }],
    "tableTwo": [{
        "colOne": 1,
        "colTwo": "two"
    }, {
        "colOne": 1,
        "colTwo": "two"
    }]
}
  

}

Комментарии:

1. Пожалуйста, покажите, что вы пробовали до сих пор

2. @cricket_007 Я создал все pojo таблиц, также написал код для класса DatabaseHelper, но я застрял, чтобы поместить эти данные в базу данных

3. Помогает ли это? guides.codepath.com/android /…

Ответ №1:

Вы можете попробовать что-то вроде этого:

 void AddJsonToDB(String jsonString, SQLiteDatabase db) throws Exception{

    JSONObject jsonObj = new JSONObject(jsonString);

    JSONArray jsonArray = jsonObj.getJSONArray("tableOne");

    if (jsonArray.length() == 0) return 0;

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

        ContentValues args = new ContentValues();

        args.put("colOne", jsonobject.getInt("colOne"));
        args.put("colTwo", jsonobject.getString("colTwo"));
        db.insert("tableOne", null, args);

    }


    jsonArray = jsonObj.getJSONArray("tableTwo");

    if (jsonArray.length() == 0) return 0;

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

        ContentValues args = new ContentValues();

        args.put("colOne", jsonobject.getInt("colOne"));
        args.put("colTwo", jsonobject.getString("colTwo"));
        db.insert("tableTwo", null, args);

    }

}