I get the data in this form:

{ "duration": 5, "intervals": 60, "time_work_start": 540, "time_work_end": 1080, "lunch_start": 780, "lunch_end": 840, "workweek": { "1": "Понедельник", "2": "Вторник" }, "time_delay": 15 } 

The request body looks like this:

 public class BodyUserSettings implements Serializable { @SerializedName("duration") @Expose private String duration; @SerializedName("intervals") @Expose private String intervals; @SerializedName("time_work_start") @Expose private String timeWorkStart; @SerializedName("time_work_end") @Expose private String timeWorkEnd; @SerializedName("lunch_start") @Expose private String lunchStart; @SerializedName("lunch_end") @Expose private String lunchEnd; @SerializedName("workweek") @Expose private Workweek workweek; @SerializedName("time_delay") @Expose private String timeDelay; public String getDuration() { return duration; } public void setDuration(String duration) { this.duration = duration; } public BodyUserSettings withDuration(String duration) { this.duration = duration; return this; } public String getIntervals() { return intervals; } public void setIntervals(String intervals) { this.intervals = intervals; } public BodyUserSettings withIntervals(String intervals) { this.intervals = intervals; return this; } public String getTimeWorkStart() { return timeWorkStart; } public void setTimeWorkStart(String timeWorkStart) { this.timeWorkStart = timeWorkStart; } public BodyUserSettings withTimeWorkStart(String timeWorkStart) { this.timeWorkStart = timeWorkStart; return this; } public String getTimeWorkEnd() { return timeWorkEnd; } public void setTimeWorkEnd(String timeWorkEnd) { this.timeWorkEnd = timeWorkEnd; } public BodyUserSettings withTimeWorkEnd(String timeWorkEnd) { this.timeWorkEnd = timeWorkEnd; return this; } public String getLunchStart() { return lunchStart; } public void setLunchStart(String lunchStart) { this.lunchStart = lunchStart; } public BodyUserSettings withLunchStart(String lunchStart) { this.lunchStart = lunchStart; return this; } public String getLunchEnd() { return lunchEnd; } public void setLunchEnd(String lunchEnd) { this.lunchEnd = lunchEnd; } public BodyUserSettings withLunchEnd(String lunchEnd) { this.lunchEnd = lunchEnd; return this; } public Workweek getWorkweek() { return workweek; } public void setWorkweek(Workweek workweek) { this.workweek = workweek; } public BodyUserSettings withWorkweek(Workweek workweek) { this.workweek = workweek; return this; } public String getTimeDelay() { return timeDelay; } public void setTimeDelay(String timeDelay) { this.timeDelay = timeDelay; } public BodyUserSettings withTimeDelay(String timeDelay) { this.timeDelay = timeDelay; return this; } public class Workweek implements Serializable { @SerializedName("1") @Expose private String _1; @SerializedName("2") @Expose private String _2; public Workweek(String _1, String _2) { super(); this._1 = _1; this._2 = _2; } public String getId() { return _1; } public void setId(String id) { this._1 = id; } public Workweek withId(String _1) { this._1 = _1; return this; } public String getTitle() { return _2; } public void setTitle(String _2) { this._2 = _2; } public Workweek withTitle(String _2) { this._2 = _2; return this; } } 

}

POST request:

 @POST("/settings") Call<BodyUserSettings> postIdToken(@Body BodyIdToken id_token); 

In mainactivity:

  private void sendRequestIdTokenToServer() { BodyIdToken hexPost = new BodyIdToken(); hexPost.idToken = mIdToken; Call<BodyUserSettings> call = mService.postIdToken(hexPost); call.enqueue(new Callback<BodyUserSettings>() { @Override public void onResponse(@NonNull Call<BodyUserSettings> call, @NonNull Response<BodyUserSettings> response) { mBodyUserSettings = response.body(); mMainDatabase.saveSettings(mBodyUserSettings); mMainDatabase.saveWorkweekDays(mBodyWorkweek); } @Override public void onFailure(@NonNull Call<BodyUserSettings> call, @NonNull Throwable t) { } }); } 

Tables in SQLite:

 private final String CREATE_SETTINGS_TABLE = "CREATE TABLE IF NOT EXISTS " + SETTINGS_TABLE + "(" + _id + " INTEGER PRIMARY KEY AUTOINCREMENT," + DURATION + "INTEGER," + INTERVALS + " INTEGER," + TIME_WORK_START + " INTEGER," + TIME_WORK_END + " INTEGER," + LAUNCH_START + " INTEGER," + LAUNCH_END + " INTEGER," + WORKWEEK + " INTEGER," + TIME_DELAY + " INTEGER" + ")"; private final String CREATE_WORKWEEK_TABLE = "CREATE TABLE IF NOT EXISTS " + WORKWEEK_TABLE + "(" + _id + " INTEGER PRIMARY KEY," + ID_DAY + " TEXT," + TITLE_DAY + " TEXT" + ")"; 

Saving to SQLite

 public void saveSettings(BodyUserSettings settings) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(DURATION, settings.getDuration()); cv.put(INTERVALS, settings.getIntervals()); cv.put(TIME_WORK_START, settings.getTimeWorkStart()); cv.put(TIME_WORK_END, settings.getTimeWorkEnd()); cv.put(LAUNCH_START, settings.getLunchStart()); cv.put(LAUNCH_END, settings.getLunchEnd()); cv.put(WORKWEEK, String.valueOf(settings.getWorkweek())); cv.put(TIME_DELAY, settings.getTimeDelay()); db.insert(SETTINGS_TABLE, null, cv); Log.d("LOG_TAG_saveSettings ", "save: " + settings.getDuration() + "; " + settings.getIntervals() + "; " + settings.getTimeWorkStart() + "; " + settings.getTimeWorkEnd() + "; " + settings.getLunchStart() + "; " + settings.getLunchEnd() + "; " + settings.getWorkweek() + "; " + settings.getTimeDelay() + "."); db.close(); } public void saveWorkweekDays(BodyUserSettings.Workweek workweek) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(ID_DAY, workweek.getId()); cv.put(TITLE_DAY, workweek.getTitle()); db.insert(WORKWEEK_TABLE, null, cv); Log.d("LOG_TAG_saveWorkweek", "save " + workweek.getId() + "; " + workweek.getTitle() + "."); db.close(); } 

}

And in the end I get the data in this form:

D / LOG_TAG_saveSettings: save: 5; 60; 540; 1080; 780; 840; com.example.myApp.data.network.entities.BodyUserSettings$Workweek@3ed84f07; 15.

I don’t understand how to correctly display data from workweek. Maybe they are generally incorrectly saved. What am I doing wrong?

If you use JSON parsing, how can you save it in SQLite?

  • Maybe you need to override the toString() method in public class Workweek ? - Farkhod Daniyarov
  • and in sendRequestIdTokenToServer for some reason, it seems to me that you need to start saving mMainDatabase.saveWorkweekDays(mBodyWorkweek); - Farkhod Daniyarov
  • First you need to understand that in the logs you see not the data, but the textual representation of the object. To see something more informative, you need to override toString() or write the contents of the fields to the log. - woesss
  • So far, none of this has helped ... - Anton Pankratov
  • And if you use JSON parsing, how then workweek save to SQLite? - Anton Pankratov

0