JSONObject поставил проблему с методом

#java #android #json #class

#java #Android #json #класс

Вопрос:

Очень новый, так что потерпите меня.
Метод BloodPressure() вызывается, MainActivity и значения извлекаются и «помещаются» в jsonObject .

Метод getBloodPressure() вернет этот jsonobject и будет вызван в другом модуле.
JSONObject в getBloodPressure() всегда пуст {}.
Я попытался отладить. Таким образом, я вижу, что json создан точно. Но когда я «возвращаю JSONObject» в getBloodPressure, он просто сбрасывается и становится {}.

Как мне вызвать JSONObject со значениями давления крови?

MainActivity

 private static void dumpDataSet(DataSet dataSet) {
.
.
.
healthdata.BloodPressure(type, systolic, diastolic, sdate, edate );
//printed this and it works perfectly fine

}
 

HealthData.java

 public class HealthData {

    private String steps,heartRate,systolic, diastolic, bloodGlucose,bodyTemperature,age, startDate, endDate, dataType;
    JSONObject jsonObject = new JSONObject();

    public HealthData(){
        super();
    }

    public void BloodPressure(String type, String sys, String dia, String sdate, String edate) {
        dataType = type;
        systolic = sys;
        diastolic = dia;
        startDate = sdate;
        endDate = edate;
        try {
            jsonObject.put("dataType", dataType);
            jsonObject.put("SystolicValue", systolic);
            jsonObject.put("DiastolicValue", diastolic);
            jsonObject.put("startDate", startDate);
            jsonObject.put("endDate", endDate);
            Log.v("json:", String.valueOf(this.jsonObject));     //prints json successfully
        } catch (Exception e) {
            Log.v(e.toString(), null);
        }
    }

    public JSONObject getBloodPressure() throws JSONException {
        return jsonObject;            //trying to return json but its empty
    }

}

 

Другой модуль:

 public void getHealthData(Callback cb) {
    try {
        HealthData healthData = new HealthData();
        JSONObject json = healthData.getBloodPressure();   ///calling it here
        cb.invoke(null, json);
    } catch (Exception e){
        cb.invoke(e.toString(), null);
    }
}

 

Ответ №1:

Я увидел ваш код и обнаружил, что вы раньше не вызывали BloodPressure() метод getBloodPressure() .
я думаю, что вам следует вызвать BloodPressure() метод раньше getBloodPressure()

Итак, ваш другой модуль кодирует примерно так.

 public void getHealthData(Callback cb) {
    try{
        HealthData healthData = new HealthData();
        healthData.BloodPressure("type", "sys", "dia", "sdate", "edate") // you must call this method.
        JSONObject json = healthData.getBloodPressure();   ///calling it here
        cb.invoke(null, json);
    } catch (Exception e) {
        cb.invoke(e.toString(), null);
    }
}
 

Обновить:
Я думаю, вам не следует создавать новый экземпляр метода HealthData in getHealthData() .

 public void getHealthData(Callback cb) {
    try{
        //HealthData healthData = new HealthData(); // this line is wrong. So I removed this line.
        JSONObject json = healthData.getBloodPressure();   ///calling it here
        cb.invoke(null, json);
    } catch (Exception e) {
        cb.invoke(e.toString(), null);
    }
}
 

Комментарии:

1. Проверьте мой обновленный вопрос. Я вызываю BloodPressure() в MainActivity. Я получаю все данные и «помещаю» в JSONObject. но когда я вызываю getBloodPressure(), он возвращает пустой {}

2. Пожалуйста, посмотрите ваш другой модуль. вы создаете новый экземпляр healthData, поэтому теперь он пуст. вы не должны создавать новые HealthData() в методе getHealthData().