У меня возникли проблемы с преобразованием моих данных в json
для выборки при модернизации.Итак, вот как работает моя работа.
В моей базе данных sqlite
есть куча данных, которые выглядят так:
![enter image description here](https://i.stack.imgur.com/K4vLE.png)
и что я сделал, это получил все эти данные и преобразовал их в json
, как этот: (PS. У меня есть этот код в этой ссылке. https://tech.sarathdr.com/convert-database-cursor-result-to-json-array-android-app-development-1b9702fc7bbb)
public void getdbAndSendData() {
Cursor cursor2=databaseHelper.selectLocationFromLocalDatabaseAll(db);
JSONArray resultSet = new JSONArray();
JSONObject returnObj = new JSONObject();
cursor2.moveToFirst();
while (cursor2.isAfterLast() == false) {
int totalColumn = cursor2.getColumnCount();
JSONObject rowObject = new JSONObject();
for (int i = 0; i < totalColumn; i++) {
if (cursor2.getColumnName(i) != null) {
try {
if (cursor2.getString(i) != null) {
Log.d("TAG_NAME", cursor2.getString(i));
rowObject.put(cursor2.getColumnName(i), cursor2.getString(i));
} else {
rowObject.put(cursor2.getColumnName(i), "");
}
} catch (Exception e) {
Log.d("TAG_NAME", e.getMessage());
}
}
}
resultSet.put(rowObject);
cursor2.moveToNext();
}
cursor2.close();
Log.d("PAkultie", resultSet.toString());
Это результатмоего приложения в отладчике:
![enter image description here](https://i.stack.imgur.com/cr33N.png)
Так как я правильно получил данные, мне нравится иметь конструктор-установщик-получатель, чтобы он мог вызыватьМодифицируйте данные и сделайте обратный вызов ..
Во всяком случае, это мой предыдущий конструктор установщика геттера. (PS. Этот установщик геттера сохраняет построчно данные в моем sqlite и отправляет их на модернизацию и работает.но я должен обновить мои данные, которые могут нести много строк, которые будут отправлены для модернизации за один вызов)
public class MapDetails {
@SerializedName("SerialNumber")
@Expose
private String SerialNumber;
@SerializedName("Coordinate1")
@Expose
private String Coordinate1;
@SerializedName("Coordinate2")
@Expose
private String Coordinate2;
@SerializedName("DateTime")
@Expose
private String DateTime;
@SerializedName("Speed")
@Expose
private String Speed;
@SerializedName("Port")
@Expose
private int Port;
public MapDetails(String serialNumber, String coordinate1, String coordinate2, String dateTime, String speed, int port) {
SerialNumber = serialNumber;
Coordinate1 = coordinate1;
Coordinate2 = coordinate2;
DateTime = dateTime;
Speed = speed;
Port = port;
}
public String getSerialNumber() {
return SerialNumber;
}
public void setSerialNumber(String serialNumber) {
SerialNumber = serialNumber;
}
public String getCoordinate1() {
return Coordinate1;
}
public void setCoordinate1(String coordinate1) {
Coordinate1 = coordinate1;
}
public String getCoordinate2() {
return Coordinate2;
}
public void setCoordinate2(String coordinate2) {
Coordinate2 = coordinate2;
}
public String getDateTime() {
return DateTime;
}
public void setDateTime(String dateTime) {
DateTime = dateTime;
}
public String getSpeed() {
return Speed;
}
public void setSpeed(String speed) {
Speed = speed;
}
public int getPort() {
return Port;
}
public void setPort(int port) {
Port = port;
}
}
К вашему сведению: это также мой предыдущий код для этого конструктора ..
Cursor cursor = databaseHelper.retrieveLocationFromLocalDatabase(db);
while (cursor.moveToNext()) {
serialID =ursor.getString(cursor.getColumnIndex
(DatabaseHelper.SERIALNUMBER));
lati = cursor.getString(cursor.getColumnIndex
(DatabaseHelper.LATITUDE));
longi = cursor.getString(cursor.getColumnIndex
(DatabaseHelper.LONGITUDE));
dateTime = cursor.getString(cursor.getColumnIndex
(DatabaseHelper.DATE_TIME));
speed = cursor.getString(cursor.getColumnIndex
(DatabaseHelper.SPEED));
portss = cursor.getInt(cursor.getColumnIndex(DatabaseHelper.PORT));
}
MapDetails mapDetails = new MapDetails(serialID,
lati, longi, dateTime, speed, portss);
List<MapDetails> data = new ArrayList<>();
data.add(mapDetails);
try {
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("http://" + ADDRESS + ":" + PORT) // this cotains my api link
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
API locate = retrofit.create(API.class);