2017-02-20 28 views
1

我的问题是我不能或者我不知道如何检索我的JSON数据类valeur这是包含我的变量的setter和getter的类。把JSON放在一个getter和setter

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

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

我知道如何在try/catch语句使用它,但我并不想表明我的变量MPX在try/catch语句

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; 
} 
} 
+0

我不明白您的问题和你至少应该从你的榜样删除注释代码。 –

+0

我很抱歉,因为我再也没有一个好的英语,我会删除并注明这个(并且我想只显示我的文本视图中类价格的获得者的变量mpx) –

+0

如果我正确理解了您的问题:你想将Json解析从AfficheurListView移动到Valeurs? 为什么不有一个静态方法Valeurs :: fromJson(String json)返回一个Valeurs实例,它解析了json本身? –

回答

1

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

然后,在尝试在AfficheurListView.java声明,编辑:

valeurs.getMpx(); 

注:

Gson gson = new Gson(); 
Valeurs valeurs = gson.fromJson(json_string, Valeurs.class); 

现在,你可以得到MPX字段名称必须相匹配与您的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()); 
     } 
    } 
} 
+0

嗨,所以我需要创建一个类gson?将我的字符串转换为我的Java对象?所以见证我会有3班? AfficheurLisView,Valeur和Gson? –

+0

不,您可以使用[Maven](https://mvnrepository.com/artifact/com.google.code.gson/gson)轻松地将GSON实现到您的项目中,或者在[github](https:// github)上下载源代码。 COM /谷歌/ GSON)。所以,你有GSON图书馆和你的课AfficheurLisView,Valeur。只要按照描述编辑你的try/catch语句,就完成了。 –

+0

我编辑了我的答案,告诉你如何在你的情况下实现GSON –