преобразовать JSON в конструктор с помощью геттера и сеттера - PullRequest
0 голосов
/ 01 февраля 2019

У меня возникли проблемы с преобразованием моих данных в json для выборки при модернизации.Итак, вот как работает моя работа.

В моей базе данных sqlite есть куча данных, которые выглядят так:

enter image description here

и что я сделал, это получил все эти данные и преобразовал их в 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

Так как я правильно получил данные, мне нравится иметь конструктор-установщик-получатель, чтобы он мог вызыватьМодифицируйте данные и сделайте обратный вызов ..

Во всяком случае, это мой предыдущий конструктор установщика геттера. (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);

1 Ответ

0 голосов
/ 04 февраля 2019

попробуйте посмотреть в моем коде, я понял, что я также не устанавливаю размер моего массива, я обнаружил, что вы можете добавить данные в свой объект json, чтобы иметь массив json, и за ним последует модификация,быть отправлено через массив массива rest json ..

сначала я установил массив, так что я могу хранить больше блоков json объекта:

  data = new ArrayList<>(20);

Во-вторых, мои данные я получаю каждые 2в мои детали будут добавлены секунды / jsonObject:

  MapDetails mapDetails = new MapDetails(id, lat, lon,well,"2", 9090);
   data.add(mapDetails);

И теперь это мои новые данные, в моем объекте json, который я нашел в моем отладчике: (JsonObject to Json Array)

enter image description here

, и вы можете отправить сейчас через модернизацию ... и она работает сейчас:)

...