2017-02-20 2 views
1

Моя проблема: я не могу или не знаю, как получить данные JSON в классе valeur, который является классом, который содержит установщик и getter моих переменных.Поместите JSON в getter и setter

У меня есть класс, который отображает мои переменные, который равен AfficheurListView.

Я хочу просто разобрать мой JSON, и результат этого должен быть в getter и setter значения класса, которое будет отображаться по методу onCreate моего класса AfficheurListView.

Я знаю, как использовать его в Try/уловом, но я не хочу, чтобы показать свою переменную MPX в Try/уловом

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 моего получателя класса valeurs на textView) –

+0

Если я правильно понял вашу проблему : вы хотите переместить json-парсинг из AfficheurListView в Valeurs? Почему не имеет статического метода Valeurs :: fromJson (String json), который возвращает экземпляр Valeurs, который анализировал сам json? –

ответ

1

Во-первых, я настоятельно рекомендую использовать GSON или Jackson для преобразования String в объект Java (в данном случае ваш класс Valeurs.java) и Java ob ject to String, он называется сериализации и десериализации.

Затем в попробовать заявление в AfficheurListView.java, редактировать в:

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

Теперь вы можете получить Mpx с:

valeurs.getMpx(); 

Примечание: имя поля должны соответствовать с вашими полями JSON.

Примечание 2: Не используйте множественное число для названия класса (пример: Valeurs -> Valeur).

Надеюсь, это поможет вам!

EDIT: вам нужно реализовать что-то подобное:

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? так что с gson у меня будет 3 класса? AfficheurLisView, Valeur и Gson? –

+0

Нет, вы можете легко реализовать GSON в своем проекте с помощью [Maven] (https://mvnrepository.com/artifact/com.google.code.gson/gson) или загрузить источники на [github] (https: // github. ком/Google/gson). Итак, у вас есть библиотека GSON и ваши классы AfficheurLisView, Valeur. Просто отредактируйте инструкцию try/catch, как описано, и это сделано. –

+0

Я отредактировал свой ответ, чтобы показать вам, как реализовать GSON в вашем случае –