我怎么能比较一个json与<或者>

时间:2017-02-22 13:01:25

标签: java android json

我有一个问题我想比较我的json但是没有工作我不明白为什么。 我尝试使用函数compareTo(),但也没有工作。我想要那个

if(Myjson< 5或Myjson> 5)

{(做某事)}

我展示了我的代码

Acceuil.java

public class Accueil extends AppCompatActivity {
String json_string;
JSONObject jObj = null;
private TextView Mpx,Al,Ar,Rds,Pilots,Frequence,Rf;
private String value= String.valueOf(5);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_accueil);
    json_string = getIntent().getExtras().getString("json_data");

    Mpx = (TextView) findViewById(R.id.mpx);
    Ar=(TextView)findViewById(R.id.ar);
    Al=(TextView)findViewById(R.id.al);
    Rds=(TextView)findViewById(R.id.rds);
    Pilots=(TextView)findViewById(R.id.pilots);
    Frequence=(TextView)findViewById(R.id.fréquence);
    Rf=(TextView)findViewById(R.id.rf);

            try {
                // Json Object {}
                /******************************************************************************/

                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");
                Valeur valeurs = new Valeur(mpx, rds, al, ar, frequence, pilots, id, timestamps, id_SIGFOX, rf);
                /******************************************************************************/
                if(mpx.compareTo(String.valueOf(5))) {
                Mpx.setText(valeurs.getMpx())
                Mpx.setText(valeurs.getMpx());
                 Mpx.setTextColor(Color.parseColor("#00000"))

                }else{
                Mpx.setText(valeurs.getMpx())
                Mpx.setTextColor(Color.parseColor("#DF0101"))};//red

            } catch (JSONException e) {

                e.printStackTrace();
            }

        }

public void popUp(View view){
    Intent intent=new Intent(this,popUp.class);
    startActivity(intent);

}
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.warning:
            Intent intent = new Intent(this, popUp.class);
            startActivity(intent);
            return true;
        case R.id.localiser:
            return true;
        case R.id.station:
            return true;
    }
    return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    //ajoute les entrées de menu_test à l'ActionBar
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;
}
}

Valeur.java

   public class Valeur {
    private String mpx,rds,al,ar,pilots,frequence,id,timestamps,id_SIGFOX,rf;
    public Valeur(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;
}
}

my flux json

{"id":"1","timestamp":"2017-01-31 10:59:11","id_SIGFOX":"ABER","MPX":"1","RDS":"2","RF":"79","PILOT":"8","a_l":"-5","a_r":"-39","Frequence":"1034"}

2 个答案:

答案 0 :(得分:0)

我认为问题是您尝试将mpx中的字符串与整数5进行比较。

mpx = jObj.getString("MPX");
...
if(mpx.compareTo(String.valueOf(5))) {

要正确执行此操作,您需要将mpx转换为int。使用除jObj.getString之外的其他内容,或使用Integer.parseInt将字符串转换为int。

答案 1 :(得分:0)

执行以下操作:

int mpxInt = Integer.parseInt(mpx);
if(mpxInt > 5) {
   // mpx is > 5
} else {
   // mpx is < 5
}

这应该可以正常使用