@Awesome_T

Как присвоить номер для JSONObject?

Привет всем!
Прошу помощи в разрешении небольшой проблемы.
После выполнения запроса к серверу, приходят объекты, которые я пытаюсь сохранить в SQLlite,.
однако, вместо последовательного сохранения, каждого из объектов, происходит множественная запись первого объекта из запроса
2020-07-02 14:45:52.262 28975-28975 D/CleanersActivity: Ответ соединения на HTTP запрос Get_Usage_Cleaner: {"error":false,"message":"Data was downloudaed!","\u0441leaner_usage":{"id_cleaner":"ID01","datetime_cleaner_usage":"2020-05-30","water_spent_cleaner_usage":"20","electric_spent_cleaner_usage":"123"}}{"error":false,"message":"Data was downloudaed!","\u0441leaner_usage":{"id_cleaner":"ID01","datetime_cleaner_usage":"2019-05-22","water_spent_cleaner_usage":"29","electric_spent_cleaner_usage":"59"}}{"error":false,"message":"Data was downloudaed!","\u0441leaner_usage":{"id_cleaner":"ID01","datetime_cleaner_usage":"2019-05-27","water_spent_cleaner_usage":"35","electric_spent_cleaner_usage":"129"}}{"error":false,"message":"Data was downloudaed!","\u0441leaner_usage":{"id_cleaner":"ID01","datetime_cleaner_usage":"2020-06-28","water_spent_cleaner_usage":"22","electric_spent_cleaner_usage":"96"}}
2020-07-02 14:45:52.264 28975-28975 D/CleanersActivity: Количество обънетов 4
2020-07-02 14:45:52.264 28975-28975 D/DatabaseHandler: -----Метод вставки данных в локальную таблику TABLE_CLEANERS_USAGE ----
2020-07-02 14:45:52.295 28975-28975 D/DatabaseHandler: Ответ Insert_Cleaner_Usage:water_spent_cleaner_usage=20 datetime_cleaner_usage=2020-05-30 electric_spent_cleaner_usage=123 id_cleaner=ID01
2020-07-02 14:45:52.297 28975-28975 D/DatabaseHandler: -----Метод вставки данных в локальную таблику TABLE_CLEANERS_USAGE ----
2020-07-02 14:45:52.316 28975-28975 D/DatabaseHandler: Ответ Insert_Cleaner_Usage:water_spent_cleaner_usage=20 datetime_cleaner_usage=2020-05-30 electric_spent_cleaner_usage=123 id_cleaner=ID01
2020-07-02 14:45:52.318 28975-28975 D/DatabaseHandler: -----Метод вставки данных в локальную таблику TABLE_CLEANERS_USAGE ----
2020-07-02 14:45:52.333 28975-28975 D/DatabaseHandler: Ответ Insert_Cleaner_Usage:water_spent_cleaner_usage=20 datetime_cleaner_usage=2020-05-30 electric_spent_cleaner_usage=123 id_cleaner=ID01
2020-07-02 14:45:52.335 28975-28975 D/DatabaseHandler: -----Метод вставки данных в локальную таблику TABLE_CLEANERS_USAGE ----
2020-07-02 14:45:52.348 28975-28975 D/DatabaseHandler: Ответ Insert_Cleaner_Usage:water_spent_cleaner_usage=20 datetime_cleaner_usage=2020-05-30 electric_spent_cleaner_usage=123 id_cleaner=ID01


Код,

public void onResponse(String response) {
                        Log.d(TAG, "Ответ соединения на HTTP  запрос  Get_Usage_Cleaner: " + response);
                        //hideDialog();
                        try {
                            JSONObject jObj = new JSONObject(response);
                            boolean error = jObj.getBoolean("error");
                            if (!error) {
                                JSONObject json_сleaner_usage = jObj.getJSONObject("сleaner_usage");
                                Log.d(TAG, "Количество обънетов " + json_сleaner_usage.length());
                               for (int i = 0; i < json_сleaner_usage.length(); i++) {
                                    db.Insert_Cleaner_Usage(json_сleaner_usage.getString(KEY_ID_CLEANER),
                                            json_сleaner_usage.getString(KEY_WATER_SPENT_CLEANER_USAGE),
                                            json_сleaner_usage.getString(KEY_ELECTRIC_SPENT_CLEANER_USAGE),
                                            json_сleaner_usage.getString(KEY_DATETIME_CLEANER_USAGE));
                                }
                            }


Как можно получить доступ к номеру объекта для сохранения всех объектов из запроса?

Я думаю, это выглядеть должно примерно так( могу ошибаться конечно )

json_сleaner_usage.COUNT(i).getString(KEY_ID_CLEANER),


Заранне благодарю за помощь )
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
@onepavel
Консультация и разработка мобильных приложений
1 странный json, это и не массив объектов и не поля в объекте
2 в коде не вижу перебора полученных объектов

если это массив то объекты перебираются так
JSONArray array = root.getJSONArray("some id");
for (int i = 0; i < array.length(); i++) {
    JSONObject item = array.getJSONObject(i);
    db.Insert_Cleaner_Usage()
}

если поля в объекте то так
JSONObject list = root.getJSONObject("some id");
Iterator<String> iterator = list.keys();
while(iterator.hasNext()) {
    String key = iterator.next();
    JSONObject item = list.getJSONObject(key);
    db.Insert_Cleaner_Usage()
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы