【发布时间】:2016-03-23 01:39:58
【问题描述】:
我收到以下错误:
org.json.JSONException: java.lang.Byte 类型为 0 的值 91 无法转换为 JSONObject
正是因为这行代码:
JSONObject jObj = j.getJSONObject(i);
我正在执行GET 请求,并将其记录在 Android Studio 中,如下所示:
jsonarray [91,109,111,100,101,108,46,83,116,111,114,101,64,52,57,57,54,102,97,56,44,32,109,111,100,101,108
在浏览器中是这样的:
截图链接:http://i.imgur.com/NTpwbuB.png
我使用了JSONObject,因为我以后想做这样的事情:
String storeName = jObj.getString("STORE NAME");
String street = jObj.getString("STREET");
String city = jObj.getString("CITY");
代码如下:
public void getSubprises() {
Call<List<Store>> call = subpriseAPI.listStores();
call.enqueue(new Callback<List<Store>>() {
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public void onResponse(Response<List<Store>> response, Retrofit retrofit) {
try {
JSONArray j = new JSONArray(response.body().toString().getBytes());
System.out.println("jsonarray "+ j);
for (int i = 0; i < j.length(); i++) {
JSONObject jObj = j.getJSONObject(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Throwable t) {
}
});
}
【问题讨论】:
-
为什么你认为你
JSONArray中的数字JSON值91可以转换成JSONObject? -
你不能得到91的街道。你不需要把jsonobjects放在jsonarray里面吗?您还将字节放入 jsonarray 构造函数中。把你想要的字符串作为一个 jsonarray