2017-10-09 1 views
0

Ich kann nicht eine JSON-Antwort von einer URL ("http://www.telekino.com.ar/cupones/control/1267/1027027/84.json")Cant erhalten Daten von JSON-Objekt (Android)

{"kino":{"ganador":false,"diferencia":""},"rekino":{"ganador":false,"diferencia":""},"carton_formateado":"1.027.027","cupon_numeros":"","premio_extra":false,"cupon_caducidad":"22\/08\/2016","cupon_erroneo":true} 

Ich benutzte einen JSONViewr analysieren den Baum zu verstehen, und ist sehr einfach, aber ich kann nicht erhalten die booleans, Strings, etc. ich durchweg null Ergebnisse empfangen

JsonURL= "http://www.telekino.com.ar/cupones/control/1267/1027027/84.json" 



      JsonObjectRequest jsObjRequest = new JsonObjectRequest 
        (Request.Method.GET, JsonURL, null, new Response.Listener<JSONObject>() { 

         @Override 
         public void onResponse(JSONObject response) { 





           try { 
            JSONObject object= response.getJSONObject("object"); 

            algoerroneo = object.getBoolean("algo_erroneo"); 
            JSONObject kino = object.getJSONObject("kino"); 
            kinoganador = kino.getBoolean("ganador"); 
            JSONObject data = kino.getJSONObject("data"); 
            JSONObject Categoria = data.getJSONObject("Categoria"); 
            Smonto = Categoria.getString("monto"); 
            JSONObject Ganador = data.getJSONObject("Ganador"); 
            Saciertos = Ganador.getString("aciertos"); 
            JSONObject rekino = object.getJSONObject("rekino"); 
            rekinoganador = rekino.getBoolean("ganador"); 
            objetoslist = object.toString(); 





           } catch (JSONException e1) { 
            e1.printStackTrace(); 

           } 








          data=String.valueOf(algoerroneo)+" "+String.valueOf(kinoganador)+" "+String.valueOf(rekinoganador)+ "\n"+objetoslist; 
          results.setText(data); 

         } 
        }, new Response.ErrorListener() { 

         @Override 
         public void onErrorResponse(VolleyError error) { 
          // TODO Auto-generated method stub 
          text8.setText("shit2"); 
         } 
        }); 

        // Access the RequestQueue through your singleton class. 
        MySingleton.getInstance(MainActivity.this).addToRequestQueue(jsObjRequest); 
+0

response.getJSONObject ("Objekt"); es gibt keinen paramnamen mit "object" direkt startformular "kino" –

+0

auch param name "algo_erroneo" ist nicht da –

Antwort

1

Das Problem ist in der ersten Zeile, wo Sie das Objekt erhalten JSONObject object = response.getJSONObject ("Objekt");

Dies versucht, das JSONObject unter dem Namen "Objekt" zu finden, Sie haben jedoch keine in Ihrem JSON. Verwenden Sie daher den JSONObject-Parameter "response" für die Referenzierung der Objekte, Strings oder Boolean.

Zum Beispiel wie folgt aus:

JSONObject kino = response.getJSONObject("kino"); 
+0

Funktioniert nicht. Das Ergebnis ist immer noch auf null. –

+0

Das funktioniert für mich. Probieren Sie es aus: JSONObject kino = response.getJSONObject ("kino"); boolean ganador = kino.getBoolean ("ganador"); Zeichenfolge carton_formateado = response.getString ("carton_formateado"); –

+0

Seine Arbeit für die Zeichenfolge. Funktioniert nicht für den booleschen Wert "algo_erroneo" innerhalb der Wurzel –

1

Schlüssel und objektbezogene Fehler zu vermeiden, können Sie POJO verwenden und Gson Zuerst Ihre POJO Ihrer Antwort von diesem site

erstellen

dann werfen Sie Ihre Antwort mit diesem Objekt mit Gson Bibliothek

Gson gson = new Gson(); 
YourPojoClass yourPojoClassObject = gson.fromJson(webresponse, YourPojoClass.class); 

Jetzt können Sie Werte leicht von yourPojoClassObject

+0

was ist webresponse? –

+0

public void onResponse (JSONObject Antwort) hier response.toString() Web-Antwort genannt. –

+0

Meine Antwort ist das gleiche wie Thientvse anders ist, er hatte im Detail zu erklären –

2

Sie Klasse erstellen, die von JSON bekommen können (mit http://www.jsonschema2pojo.org/):

Ergebnis:

-----------------------------------com.example.Example.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Example { 

@SerializedName("kino") 
@Expose 
private Kino kino; 
@SerializedName("rekino") 
@Expose 
private Rekino rekino; 
@SerializedName("carton_formateado") 
@Expose 
private String cartonFormateado; 
@SerializedName("cupon_numeros") 
@Expose 
private String cuponNumeros; 
@SerializedName("premio_extra") 
@Expose 
private Boolean premioExtra; 
@SerializedName("cupon_caducidad") 
@Expose 
private String cuponCaducidad; 
@SerializedName("cupon_erroneo") 
@Expose 
private Boolean cuponErroneo; 

public Kino getKino() { 
return kino; 
} 

public void setKino(Kino kino) { 
this.kino = kino; 
} 

public Rekino getRekino() { 
return rekino; 
} 

public void setRekino(Rekino rekino) { 
this.rekino = rekino; 
} 

public String getCartonFormateado() { 
return cartonFormateado; 
} 

public void setCartonFormateado(String cartonFormateado) { 
this.cartonFormateado = cartonFormateado; 
} 

public String getCuponNumeros() { 
return cuponNumeros; 
} 

public void setCuponNumeros(String cuponNumeros) { 
this.cuponNumeros = cuponNumeros; 
} 

public Boolean getPremioExtra() { 
return premioExtra; 
} 

public void setPremioExtra(Boolean premioExtra) { 
this.premioExtra = premioExtra; 
} 

public String getCuponCaducidad() { 
return cuponCaducidad; 
} 

public void setCuponCaducidad(String cuponCaducidad) { 
this.cuponCaducidad = cuponCaducidad; 
} 

public Boolean getCuponErroneo() { 
return cuponErroneo; 
} 

public void setCuponErroneo(Boolean cuponErroneo) { 
this.cuponErroneo = cuponErroneo; 
} 

} 
-----------------------------------com.example.Kino.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Kino { 

@SerializedName("ganador") 
@Expose 
private Boolean ganador; 
@SerializedName("diferencia") 
@Expose 
private String diferencia; 

public Boolean getGanador() { 
return ganador; 
} 

public void setGanador(Boolean ganador) { 
this.ganador = ganador; 
} 

public String getDiferencia() { 
return diferencia; 
} 

public void setDiferencia(String diferencia) { 
this.diferencia = diferencia; 
} 

} 
-----------------------------------com.example.Rekino.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Rekino { 

@SerializedName("ganador") 
@Expose 
private Boolean ganador; 
@SerializedName("diferencia") 
@Expose 
private String diferencia; 

public Boolean getGanador() { 
return ganador; 
} 

public void setGanador(Boolean ganador) { 
this.ganador = ganador; 
} 

public String getDiferencia() { 
return diferencia; 
} 

public void setDiferencia(String diferencia) { 
this.diferencia = diferencia; 
} 

} 

Dann

JsonURL = "http://www.telekino.com.ar/cupones/control/1267/1027027/84.json"

JsonObjectRequest jsObjRequest = new JsonObjectRequest 
      (Request.Method.GET, JsonURL, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 





        try { 
         // JSONObject object= response.getJSONObject("object"); 


         JSONObject kinoObject = response.getJSONObject("kino"); 
         JSONObject rekinoObject = response.getJSONObject("rekino"); 


         Gson gson = new Gson(); 

         Kino kino = gson.fromJson(kinoObject.toString(), Kino.class); 
         Rekino rekino = gson.fromJson(rekinoObject.toString(), Rekino.class); 
         Example example = gson.fromJson(response.toString(), Example.class); 



        } catch (JSONException e1) { 
         e1.printStackTrace(); 

        } 








        data=String.valueOf(algoerroneo)+" "+String.valueOf(kinoganador)+" "+String.valueOf(rekinoganador)+ "\n"+objetoslist; 
        results.setText(data); 

       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        // TODO Auto-generated method stub 
        text8.setText("shit2"); 
       } 
      }); 

    // Access the RequestQueue through your singleton class. 
    MySingleton.getInstance(MainActivity.this).addToRequestQueue(jsObjRequest); 

Ich hoffe, dass es Ihr Problem helfen!

Andernfalls können Sie Retrofit verwenden, es ist einfach mit JSON und HTTP zu verwenden!

+0

Ich habe nur ein wenig in den Abschnitt geändert, können Sie es noch einmal überprüfen. Schön, Ihnen zu helfen – Thientvse

+0

funktioniert nicht. Das Ergebnis ist immer noch auf null. –

+0

Oh, tut mir leid, ich habe einen Fehler, ich habe es bearbeitet, Sie können es erneut überprüfen! – Thientvse

1

das RoboPOJOGenerator-Plugin herunterladen und installieren it.It das JSON String zu java POJO Klasse automatisch konvertieren.

https://github.com/robohorse/RoboPOJOGenerator

und verwenden Sie die Gson Bibliothek zu speichern und den Wert in POJO-Klasse unter Code abrufen.

Gson gson = new Gson(); 
Classname objectname = gson.fromJson(jsonString,Classname.class);