Boa tarde!
Estou com dificuldade em transformar o arquivo JSON convertido no retrofit. Eu preciso enviar os dados com esse formato:
{
"celular": {
"dataHora": "2022-01-24 00:00:00.000",
"endereco": "logradouro, 0, bairro, 000000-000, municipio-AC, pais",
"intervalo": 50,
"latitude": -7.35,
"longitude": 0,
"serial": "89077890d",
"quantidadeTags": 255
},
"tag": {
"bateria": 9,
"nome": "RF02",
"temperatura": 63,
"tipo": "BT123",
"umidade": 13.54
}
}
No entanto, a saída de dados atual está da seguinte forma:
{
"dataHora":"2022/01/26 15:15:48",
"latitude":-8.8896817,
"longitude":-36.49808,
"quantidadeTags":0,
"serial":"46c0cb31ea8fdf20",
"velocidadeMetroSegundo":0.008310194127261639,
"tag":[
{
"bateria":91,
"umidade":62.0,
"temperatura":24.1,
"tipo":"3901",
"serial":"11192323",
"nome":"FR02"
}
]
}
Ou seja, preciso encapsular os dados do celular e retirar os colchetes do array de beacons.
Está é a minha classe Retrofit que pega o objeto e convert para o json
private static Retrofit getRetrofit() {
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.addInterceptor(httpLoggingInterceptor)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URL_HOMOLOGACAO_LOCAL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
return retrofit;
}
public static LocalizacaoService getLocalizacaoService(){
LocalizacaoService localizacaoService = getRetrofit().create(LocalizacaoService.class);
return localizacaoService;
}
Aqui é o meu DAO:
public class ScanDAO {
String Key = "";
private static List<Scan> beacons = new ArrayList<>();
public void salva(Scan scan) {
beacons.add(scan);
}
public List<Scan> todosBeacons() {
return new ArrayList<>(beacons);
}
}
Aqui é como eu to salvando na base:
private Dispositivo criaDispositivo() {
Timer timer = new Timer();
if (timer != null)
timer.cancel();
timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
try {
synchronized (this) {
celular.setScan(scanDAO.todosBeacons());
celular.setLatitude(latitude);
celular.setLongitude(longitude);
celular.setVelocidadeMetroSegundo(velocidadeMetroSegundo);
celular.setSerial(obterIdDispositivo());
celular.setDataHora(obterDataHoraAtual());
salvaDispositivo(celular);
Log.i(TAG, "criaDispositivo: "+ celular.toString());
}
} catch (Exception e) {
}
}
};
timer.scheduleAtFixedRate(timerTask, INTERVALO_SALVAR, INTERVALO_SALVAR);
return celular;
}