В моем приложении я хочу отправить json данные из моего приложения на сервер, а для запросов к серверу я использую библиотеку Retrofit2
.
Я должен отправить данные в формате :
“logs”:[ { “post_id”:“3”, “log”:[{“timer”:2,“last”:19,“ping”:1}, {“timer”:6,“last”:3,“ping”:5}, {“timer”:9,“last”:11,“ping”:7}, ] },
{ “post_id”:“6”, “log”:[{“timer”:9,“last”:3,“ping”:13}] },
{ “post_id”:“20”, “log”:[{“timer”:10,“last”:1,“ping”:5},{“timer”:4,“last”:2,“ping”:9}, {“timer”:9,“last”:4,“ping”:6}, {“timer”:3,“last”:19,“ping”:9}, ] },]
когда пользователи нажимают на button
я получаю эти данные: таймер - последний - пинг
для сохранения вышеуказанных данных на устройстве, я использую библиотеку Room
.
я могу сохранить эти данные ( таймер - последний - ping ) в room
, но я не знаюКак я могу соединиться с этими данными в post_id !
Затем, наконец, преобразовать вышеуказанные данные в json формат и отправить на сервер.
Номер класса Entity:
@Entity(tableName = Constants.SOCKET_PING_DATABASE_TABLE)
public class SocketPingEntity {
@PrimaryKey()
@NonNull
@ColumnInfo(name = Constants.SOCKET_PING_DATABASE_PING_TIME)
private int ping;
@ColumnInfo(name = Constants.SOCKET_PING_DATABASE_CLICK_TIME)
private int timer;
@ColumnInfo(name = Constants.SOCKET_PING_DATABASE_LAST_PING)
private Long last;
public int getPing() {
return ping;
}
public void setPing(int ping) {
this.ping = ping;
}
public int getTimer() {
return timer;
}
public void setTimer(int timer) {
this.timer = timer;
}
public Long getLast() {
return last;
}
public void setLast_ping(Long last) {
this.last = last;
}
}
Класс Room Dao для хранения данных:
@Insert(onConflict = OnConflictStrategy.REPLACE)
void addPingInfo(SocketPingEntity pingEntity);
Используйте этот код для добавления данныхв комнату:
SocketPingEntity entity = new SocketPingEntity();
entity.setPing((int) socketPing);
entity.setClick_time((int) remainTime);
entity.setLast_ping(lastPing);
socketPingDatabase.socketPingDao().addPingInfo(entity);
Используйте этот код для установки данных на сервер в формате json:
pingEntityList.addAll(socketPingDatabase.socketPingDao().getSocketPingEntityList());
SocketPingBodySendData pingBodySendData = new SocketPingBodySendData();
pingBodySendData.setAuction_id(auctionID);
pingBodySendData.setData(new Gson().toJsonTree(pingEntityList));
Log.i("socketSendDataLog", "\n Json : " + new Gson().toJsonTree(pingEntityList));
Call<SocketPingResponse> pingResponseCall = apis.getSocketPingLog(jwtToken, pingBodySendData);
pingResponseCall.enqueue(new Callback<SocketPingResponse>() {
@Override
public void onResponse(Call<SocketPingResponse> call, Response<SocketPingResponse> response) {
if (response.body() != null) {
Log.e("socketLogResponse", "Response : " + response.body().getStatus());
if (response.body().getStatus().equals("ok")) {
isSendSocketPingData = true;
pingEntityList.clear();
socketPingDatabase.socketPingDao().deleteAll();
}
}
}
@Override
public void onFailure(Call<SocketPingResponse> call, Throwable t) {
Log.e("socketLogResponse", "Error : " + t.toString());
}
});
Вызовите коды API:
@POST("api/user_log")
Call<SocketPingResponse> getSocketPingLog(@Body SocketPingBodySendData socketPingBodySendData);
Коды класса SocketPingBodySendData:
public class SocketPingBodySendData {
@SerializedName("auction_id")
@Expose
int auction_id;
@SerializedName("data")
@Expose
JsonElement data;
public int getAuction_id() {
return auction_id;
}
public void setAuction_id(int auction_id) {
this.auction_id = auction_id;
}
public JsonElement getData() {
return data;
}
public void setData(JsonElement data) {
this.data = data;
}
}
При использовании вышеуказанных кодов отправляйте такие данные, как:
{“log”:[{“clickTime”:34,“pingTime”:“160"},{“clickTime”:43,“pingTime”:“310”},{“clickTime”:59,“pingTime”:“380"}]}
НоЯ хочу отправить, например, это:
“logs”:[ { “post_id”:“3”, “log”:[{“timer”:2,“last”:19,“ping”:1}, {“timer”:6,“last”:3,“ping”:5}, {“timer”:9,“last”:11,“ping”:7}, ] },
{ “post_id”:“6”, “log”:[{“timer”:9,“last”:3,“ping”:13}] },
{ “post_id”:“20”, “log”:[{“timer”:10,“last”:1,“ping”:5},{“timer”:4,“last”:2,“ping”:9}, {“timer”:9,“last”:4,“ping”:6}, {“timer”:3,“last”:19,“ping”:9}, ] },]
Как я могу это сделать?