无法将0处java.lang.Byte类型的值91转换为JSONObject
我得到以下错误: org.json.JSONException:java.lang.Byte类型的0处的值91无法转换为JSONObject 这是因为这一行代码:无法将0处java.lang.Byte类型的值91转换为JSONObject,java,android,retrofit,Java,Android,Retrofit,我得到以下错误: 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
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
在浏览器中,它如下所示:
String storeName = jObj.getString("STORE NAME");
String street = jObj.getString("STREET");
String city = jObj.getString("CITY");
链接到屏幕截图:
我使用了一个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 j = new JSONArray(response.body().toString().getBytes());
到
我想这就是你想要做的。
如果这不起作用,那么您真的不知道响应主体内部有什么,要了解如何使用System.out.print函数查看response.body.toString打印什么
如果是这样的话
[
{门店名称:abc,街道:def},{门店名称:asw,街道:rew}
]
一切都很好。否则,您需要更改获取jsonobject的方式
编辑:
[模型。Store@4996fa8模型Store@949eac1模型Store@c45f266
您在注释中编写的这个输出使我意识到您不需要JSONArray或任何东西,Response>Response已经有了存储对象
查看该输出,response.body返回列表
然后您可以这样做以获得输出
编辑2:
java.util.Iterator it=response.body().iterator();
while(it.hasNext())
System.out.println(((Store)it.next()).getStreet());
上面的代码只有在Store对象具有getStreet方法时才有效。当然,如果没有,您可以使用st.street或st.then ctrl+space并在那里找到类似street的标签。为什么您认为JSONArray中的JSON数值91可以转换为JSONObject?您无法获得street of 91。您不需要将JSONObject放在JSON中吗数组?您还在jsonarray构造函数中放入字节。将您希望它成为jsonarray的字符串放入。我正在使用这个字符串body=new string response.body.toString.getBytes;输出显示:body[模型。Store@4996fa8模型Store@949eac1模型Store@c45f266模型Store@a8779a7模型Store@e9de54模型Store@e4971fd,所以我很接近,但我仍然不知道如何修复它..你的东西也给了我这个作为输出:[模型。Store@4996fa8模型Store@949eac1模型Store@c45f266,这里是:JSONArray j=new-JSONArrayresponse.body.toString;伙计,你真的误导了我们。我想帮助你强硬:Response-Response,正如你所看到的,Response-Response有一个存储对象列表。你不需要JSONArray。这个响应是你编写的自定义类?你需要响应中的列表对象,您不需要jsonarray。对“我的答案”的最后一次编辑将明确解决您的问题。检查更新的答案是否可以删除除包含[model]的注释之外的注释。Store@4996fa8模型Store@949eac1模型Store@c45f266 ,