我无法从网址解析JSON响应(" http://www.telekino.com.ar/cupones/control/1267/1027027/84.json")
{"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}
我使用JSONViewr来理解树,并且非常简单,但是我无法获得布尔值,字符串等。我总是收到空结果
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 :(得分:2)
您可以从JSON创建类(使用http://www.jsonschema2pojo.org/):
结果:
-----------------------------------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;
}
}
然后
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);
我希望它能帮到你解决问题!
否则,您可以使用Retrofit,它很容易与JSON和HTTP一起使用!
答案 1 :(得分:1)
为避免与键和对象相关的错误,您可以使用POJO和gson 首先,根据此site
创建您的回复的POJO然后使用gson库
使用此对象转换您的响应Gson gson = new Gson();
YourPojoClass yourPojoClassObject = gson.fromJson(webresponse, YourPojoClass.class);
现在,您可以从yourPojoClassObject轻松获取值
答案 2 :(得分:1)
问题出在您获取对象的第一行 JSONObject object = response.getJSONObject(&#34; object&#34;);
这会尝试通过名称&#34; object&#34;来查找JSONObject,但是,您的JSON中没有任何内容。所以,使用JSONObject&#34;响应&#34;用于引用对象,字符串或布尔值的参数。
例如:
JSONObject kino = response.getJSONObject("kino");
答案 3 :(得分:1)
下载RoboPOJOGenerator插件并安装它。它会自动将JSON字符串转换为java POJO类。
https://github.com/robohorse/RoboPOJOGenerator
使用GSON库使用下面的代码存储和检索POJO类中的值。
Gson gson = new Gson();
Classname objectname = gson.fromJson(jsonString,Classname.class);