我尝试从JSONArray获取JSONObject。当我做Log.i时显示JSONArray的值并拥有我想要的JSONObject。问题是当我尝试获取此JSONObject时,抛出异常show:No value for Local or No value for TipoLocal
。 Local和TipoLocal是JSONObject到JSONArray。
我怎么能这样做?
JSON
{"Retorno":[
{"Local":{"id":"1","nome":"Vovo Landa","telefone":"3333333","celular":"44444","endereco":"Rua 46 a","numero":"025","bairro":"bairro","email":"email"}},
{"TipoLocal":{"id":"1","tipo":"Pizzaria"}}
]}
的JSONObject
try{
Gson gson = new Gson();
JSONArray retorno = obj.getJSONArray("Retorno");
if(retorno.length() > 0){
for(int x = 0; x < retorno.length(); x++){
JSONObject jsoObject = retorno.getJSONObject(x);
JSONObject jsoLocal = jsoObject.getJSONObject("Local");
JSONObject jsoTipoLocal = jsoObject.getJSONObject("TipoLocal");
}
}
}catch (JSONException e) {
Log.e("JSONException->:", "getLocais in LocalDAO: " + e.getLocalizedMessage());
}
答案 0 :(得分:1)
更改此部分:
for(int x = 0; x < retorno.length(); x++){
JSONObject jsoObject = retorno.getJSONObject(x);
JSONObject jsoLocal = jsoObject.getJSONObject("Local");
JSONObject jsoTipoLocal =jsoObject.getJSONObject("TipoLocal");
}
到
for(int x = 0; x < retorno.length(); x++){
JSONObject jsoObject = retorno.getJSONObject(x);
if(jsoObject.has("Local")) {
JSONObject jsoLocal = jsoObject.getJSONObject("Local");
}
if(jsoObject.has("TipoLocal")) {
JSONObject jsoTipoLocal = jsoObject.getJSONObject("TipoLocal");
}
}
答案 1 :(得分:0)
当没有发现任何值错误时,他们可能会跟随原因
1)如果您通过Internet连接,请检查您的网络连接是否正常工作。
2)在AndroidManifest.xml文件中声明Internet权限。
3)检查您是否正在获取正确的元素,如果您正在调用result.getJsonObject(),那么请确保您尝试获取JsonObject而不是JsonArray。
4)如果你在Android中获得No value find,那么检查你是否正在从android端和服务器端拼写正确的单词 例如,如果您在服务器中声明了“城市”,那么请确保在Android中,否则它应该是“城市”而不是“城市”。
5)如果要在JsonArray上添加JsonObject,请检查JsonObject是否已添加到服务器端的JsonArray上。
6)检查LogCat中的实际异常,它会告诉你为什么没有得到值
希望这会对你有所帮助