不能得到从JSON对象(安卓)数据
我不能解析从URL的JSON响应(“http://www.telekino.com.ar/cupones/control/1267/1027027/84.json”)不能得到从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);
问题出在你得到对象的第一行 JSONObject object = response.getJSONObject(“object”);
这试图通过名称“对象”找到JSONObject,但是,您的JSON中没有任何内容。因此,使用JSONObject“response”参数来引用对象,字符串或布尔值。
例如像这样:
JSONObject kino = response.getJSONObject("kino");
不起作用。结果仍然为空。 –
这适用于我。试试这个: JSONObject kino = response.getJSONObject(“kino”); boolean ganador = kino.getBoolean(“ganador”); String carton_formateado = response.getString(“carton_formateado”); –
其工作的字符串。不工作在根 –
为了避免密钥和相关对象的错误,你可以使用POJO和GSON 首先,从这个site
创建您回应的POJO然后使用GSON库
Gson gson = new Gson();
YourPojoClass yourPojoClassObject = gson.fromJson(webresponse, YourPojoClass.class);
现在你可以从yourPojoClassObject
轻松搞定值什么是web响应? –
public void onResponse(JSONObject response)here response.toString()called web response。 –
我的肛门跟Thientvse不一样,是他详细解释过的 –
您可以从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一起使用!
下载RoboPOJOGenerator插件并安装it.It将JSON字符串自动转换为Java POJO类。
https://github.com/robohorse/RoboPOJOGenerator
,并使用GSON库来存储和使用下面的代码在POJO类检索该值。
Gson gson = new Gson();
Classname objectname = gson.fromJson(jsonString,Classname.class);
response.getJSONObject(“object”); “对象”没有参数名称直接启动形式“kino” –
也param名称“algo_erroneo”不存在 –