Java 将JSON放入getter和setter中

Java 将JSON放入getter和setter中,java,android,json,getter-setter,Java,Android,Json,Getter Setter,我的问题是我不能或不知道如何在类valeur中检索JSON数据,该类包含变量的setter和getter 我有一个显示变量的类,它是AfficheurListView 我只想解析我的JSON,其结果需要在类值的getter和setter中显示在我的类AfficheurListView的方法onCreate上 我知道如何在try/catch中使用它,但我不想在try/catch中显示我的变量mpx AfficheurListView.java public class AfficheurListV

我的问题是我不能或不知道如何在类
valeur
中检索JSON数据,该类包含变量的setter和getter

我有一个显示变量的类,它是
AfficheurListView

我只想解析我的JSON,其结果需要在类值的getter和setter中显示在我的类
AfficheurListView的方法
onCreate

我知道如何在try/catch中使用它,但我不想在try/catch中显示我的变量mpx

AfficheurListView.java

public class AfficheurListView extends AppCompatActivity {
    String json_string2;
    String json_string;
    JSONObject jObj = null;
    TextView textView;
    String mpx,rds,al,ar,frequence,pilots,id,id_SIGFOX,timestamps,rf;
    Valeurs valeurss=new Valeurs( mpx,rds,al,ar,frequence,pilots,id,id_SIGFOX,timestamps,rf);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display_listview_layout);

    json_string=getIntent().getExtras().getString("json_data");
    json_string2=getIntent().getExtras().getString("json_Mpx");
    textView=(TextView)findViewById(R.id.textView4);

    textView.setText(valeurss.getMpx()); //display the variable mpx of the getter


    try {
       String mpx,rds,al,ar,frequence,pilots,id,id_SIGFOX,timestamps,rf;
        jObj = new JSONObject(json_string);
        mpx=  jObj.getString("MPX");
        rds =jObj.getString("RDS");
        rf=jObj.getString("RF");
        frequence =jObj.getString("Frequence");
        timestamps=jObj.getString("timestamp");
        id= jObj.getString("id");
        id_SIGFOX= jObj.getString("id_SIGFOX");
        pilots= jObj.getString("PILOT");
        al= jObj.getString("a_l");
        ar= jObj.getString("a_r");

       Valeurs valeurs=new Valeurs(mpx,rds,al,ar,frequence,pilots,id,timestamps,id_SIGFOX,rf);
        valeurss=valeurs;



    } catch (JSONException e) {

        e.printStackTrace();}

}
public class Valeurs{


private String mpx,rds,al,ar,pilots,frequence,id,timestamps,id_SIGFOX,rf;
    public Valeurs(String mpx, String rds, String al, String ar, String pilots, String frequence, String id, String timestamps, String id_SIGFOX, String rf)

    {
        this.setMpx(mpx);
        this.setRds(rds);
        this.setAl(al);
        this.setAr(ar);
        this.setPilots(pilots);
        this.setFrequence(frequence);
        this.setId(id);
        this.setTimestamps(timestamps);
        this.setId_SIGFOX(id_SIGFOX);
        this.setRf(rf);


    }




public String getMpx() {
    return mpx;
}

public void setMpx(String mpx) {
    this.mpx = mpx;
}

public String getRds() {
    return rds;
}

public void setRds(String rds) {
    this.rds = rds;
}

public String getAl() {
    return al;
}

public void setAl(String al) {
    this.al = al;
}

public String getAr() {
    return ar;
}

public void setAr(String ar) {
    this.ar = ar;
}

public String getPilots() {
    return pilots;
}

public void setPilots(String pilots) {
    this.pilots = pilots;
}

public String getFrequence() {
    return frequence;
}

public void setFrequence(String frequence) {
    this.frequence = frequence;
}

public String getTimestamps() {
    return timestamps;
}

public void setTimestamps(String timestamps) {
    this.timestamps = timestamps;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getId_SIGFOX() {
    return id_SIGFOX;
}

public void setId_SIGFOX(String id_SIGFOX) {
    this.id_SIGFOX = id_SIGFOX;
}

public String getRf() {
    return rf;
}

public void setRf(String rf) {
    this.rf = rf;
}
}   
Valeurs.java

public class AfficheurListView extends AppCompatActivity {
    String json_string2;
    String json_string;
    JSONObject jObj = null;
    TextView textView;
    String mpx,rds,al,ar,frequence,pilots,id,id_SIGFOX,timestamps,rf;
    Valeurs valeurss=new Valeurs( mpx,rds,al,ar,frequence,pilots,id,id_SIGFOX,timestamps,rf);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display_listview_layout);

    json_string=getIntent().getExtras().getString("json_data");
    json_string2=getIntent().getExtras().getString("json_Mpx");
    textView=(TextView)findViewById(R.id.textView4);

    textView.setText(valeurss.getMpx()); //display the variable mpx of the getter


    try {
       String mpx,rds,al,ar,frequence,pilots,id,id_SIGFOX,timestamps,rf;
        jObj = new JSONObject(json_string);
        mpx=  jObj.getString("MPX");
        rds =jObj.getString("RDS");
        rf=jObj.getString("RF");
        frequence =jObj.getString("Frequence");
        timestamps=jObj.getString("timestamp");
        id= jObj.getString("id");
        id_SIGFOX= jObj.getString("id_SIGFOX");
        pilots= jObj.getString("PILOT");
        al= jObj.getString("a_l");
        ar= jObj.getString("a_r");

       Valeurs valeurs=new Valeurs(mpx,rds,al,ar,frequence,pilots,id,timestamps,id_SIGFOX,rf);
        valeurss=valeurs;



    } catch (JSONException e) {

        e.printStackTrace();}

}
public class Valeurs{


private String mpx,rds,al,ar,pilots,frequence,id,timestamps,id_SIGFOX,rf;
    public Valeurs(String mpx, String rds, String al, String ar, String pilots, String frequence, String id, String timestamps, String id_SIGFOX, String rf)

    {
        this.setMpx(mpx);
        this.setRds(rds);
        this.setAl(al);
        this.setAr(ar);
        this.setPilots(pilots);
        this.setFrequence(frequence);
        this.setId(id);
        this.setTimestamps(timestamps);
        this.setId_SIGFOX(id_SIGFOX);
        this.setRf(rf);


    }




public String getMpx() {
    return mpx;
}

public void setMpx(String mpx) {
    this.mpx = mpx;
}

public String getRds() {
    return rds;
}

public void setRds(String rds) {
    this.rds = rds;
}

public String getAl() {
    return al;
}

public void setAl(String al) {
    this.al = al;
}

public String getAr() {
    return ar;
}

public void setAr(String ar) {
    this.ar = ar;
}

public String getPilots() {
    return pilots;
}

public void setPilots(String pilots) {
    this.pilots = pilots;
}

public String getFrequence() {
    return frequence;
}

public void setFrequence(String frequence) {
    this.frequence = frequence;
}

public String getTimestamps() {
    return timestamps;
}

public void setTimestamps(String timestamps) {
    this.timestamps = timestamps;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getId_SIGFOX() {
    return id_SIGFOX;
}

public void setId_SIGFOX(String id_SIGFOX) {
    this.id_SIGFOX = id_SIGFOX;
}

public String getRf() {
    return rf;
}

public void setRf(String rf) {
    this.rf = rf;
}
}   

首先,我强烈建议您使用或将字符串转换为Java对象(在本例中是您的类Valeurs.Java),并将Java对象转换为字符串,这被称为序列化和反序列化

然后,在AfficheurListView.java中的try语句中,编辑为:

Gson gson = new Gson();  
Valeurs valeurs = gson.fromJson(json_string, Valeurs.class);
现在,您可以通过以下方式获得mpx:

valeurs.getMpx();
注意:字段名必须与JSON字段匹配

注意2:不要使用复数作为类名(例如:Valeurs->Valeur)

希望它能帮助你

编辑:您需要实现以下功能:

public class AfficheurListView extends AppCompatActivity {
    String json_string2;
    String json_string;

    TextView textView;
    String mpx, rds, al, ar, frequence, pilots, id, id_SIGFOX, timestamps, rf;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.display_listview_layout);

        json_string = getIntent().getExtras().getString("json_data");
        json_string2 = getIntent().getExtras().getString("json_Mpx");

        textView = (TextView) findViewById(R.id.textView4);

        try {
            // Json Object {}
            /* Useless, because you use GSON instead of this
            String mpx, rds, al, ar, frequence, pilots, id, id_SIGFOX, timestamps, rf;
            jObj = new JSONObject(json_string);
            mpx = jObj.getString("MPX");
            rds = jObj.getString("RDS");
            rf = jObj.getString("RF");
            frequence = jObj.getString("Frequence");
            timestamps = jObj.getString("timestamp");
            id = jObj.getString("id");
            id_SIGFOX = jObj.getString("id_SIGFOX");
            pilots = jObj.getString("PILOT");
            al = jObj.getString("a_l");
            ar = jObj.getString("a_r");
            Gson gson = new Gson();
            Valeurs valeurs = new Valeurs(mpx, rds, al, ar, frequence, pilots, id, timestamps, id_SIGFOX, rf);*/
            // So, now 'valeurs' and 'valeurs2' are
            Valeurs valeurs = gson.fromJson(json_string, Valeurs.class);
            Valeurs valeurs2 = gson.fromJson(json_string2, Valeurs.class);

            // if your program is here, then you have no parsing error, so set your textView
            textView.setText(valeurs2.getMpx());
        } catch (Exception e) {
            // You have an error
            textView.setText(e.getMessage());
        }
    }
}

我不能理解你的问题&你至少应该从你的例子中删除注释过的代码。我很抱歉,我没有好的英语,我将删除并注释这个(我只想在textView上显示我的变量mpx,我的类valeurs的getter)如果我正确理解了您的问题:您想将json解析从AfficheurListView移动到Valeurs?为什么不使用一个静态方法Valeurs::fromJson(字符串json)返回一个Valeurs实例,该实例解析了json本身?我从android studio开始,你能给我举个例子吗?嗨,我需要创建一个类gson?用于将字符串转换为Java对象??那么我要上3节课了?AfficheurLisView、Valeur和Gson?不,您可以使用或下载上的源代码轻松地将Gson实现到您的项目中。所以,您有GSON库和您的类AfficheurLisView,Valeur。只需按照描述编辑您的try/catch语句,就完成了。我编辑了我的答案,向您展示了如何在您的案例中实现GSON