将 JSON 放入 getter 和 setter
Put JSON in a getter and setter
我的问题是我不能或不知道如何在 class valeur
中检索我的 JSON 数据,class 包含我的变量的 setter 和 getter。
我有一个 class 显示我的变量 AfficheurListView
。
我只想解析我的 JSON,其结果需要在 class 值的 getter 和 setter 中才能显示在方法上onCreate
我的 class AfficheurListView
。
我知道如何在 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();}
}
Valeurs.java
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;
}
}
首先,我强烈建议您使用 GSON or Jackson 将 String 转换为您的 Java 对象(在本例中为您的 class Valeurs.java)和 Java object 到String,就叫序列化和反序列化.
然后,在try语句中AfficheurListView.java,编辑为:
Gson gson = new Gson();
Valeurs valeurs = gson.fromJson(json_string, Valeurs.class);
现在,您可以通过以下方式获取 mpx:
valeurs.getMpx();
注意: 字段名称必须与您的 JSON 字段匹配。
注意 2: 不要对 class 名称使用复数形式(例如: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());
}
}
}
我的问题是我不能或不知道如何在 class valeur
中检索我的 JSON 数据,class 包含我的变量的 setter 和 getter。
我有一个 class 显示我的变量 AfficheurListView
。
我只想解析我的 JSON,其结果需要在 class 值的 getter 和 setter 中才能显示在方法上onCreate
我的 class AfficheurListView
。
我知道如何在 try/catch 中使用它,但我不想在 try/catch
中显示我的变量 mpxAfficheurListView.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();}
}
Valeurs.java
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;
}
}
首先,我强烈建议您使用 GSON or Jackson 将 String 转换为您的 Java 对象(在本例中为您的 class Valeurs.java)和 Java object 到String,就叫序列化和反序列化.
然后,在try语句中AfficheurListView.java,编辑为:
Gson gson = new Gson();
Valeurs valeurs = gson.fromJson(json_string, Valeurs.class);
现在,您可以通过以下方式获取 mpx:
valeurs.getMpx();
注意: 字段名称必须与您的 JSON 字段匹配。
注意 2: 不要对 class 名称使用复数形式(例如: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());
}
}
}