JSON 对象无法转换为 JSON 数组
JSON Object cannot be converted to JSON Array
当我尝试转换来自服务器的以下 JSON 响应字符串时出现此错误。我想根据服务器的响应处理 JSONObject 或 JSONArray,因为大多数时候它 returns JSONArray.
JSON 来自服务器的响应
jsonString = {"message":"No Results found!","status":"false"}
Java代码如下
try
{
JSONArray jsonArrayResponse = new JSONArray(jsonString);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
{
if(jsonArrayResponse != null && jsonArrayResponse.length() > 0)
{
getCancelPurchase(jsonArrayResponse.toString());
}
}
}
catch(JSONException e)
{
e.printStackTrace();
}
错误日志:
org.json.JSONException: Value {"message":"No Results found!","status":"false"} of type org.json.JSONObject cannot be converted to JSONArray
at org.json.JSON.typeMismatch(JSON.java:111)
at org.json.JSONArray.<init>(JSONArray.java:96)
at org.json.JSONArray.<init>(JSONArray.java:108)
谁能帮帮我。
谢谢
您的回复 {"message":"No Results found!","status":"false"}
不是数组。它是一个对象。在您的代码中使用 JSONObject
而不是 JSONArray
。
提示:数组包含在方括号[ ] 中,对象包含在大括号{}中。
根据您对回答 1 的评论,您可以做的是
String data = "{ ... }";
Object json = new JSONTokener(data).nextValue();
if (json instanceof JSONObject)
//you have an object
else if (json instanceof JSONArray)
//you have an array
我通过编写以下代码解决了这个问题[礼貌@Optional]
String jsonString = "{\"message\":\"No Results found!\",\"status\":\"false\"}";
/* String jsonString = "[{\"prodictId\":\"P00001\",\"productName\":\"iPhone 6\"},"
+ "{\"prodictId\":\"P00002\",\"productName\":\"iPhone 6 Plus\"},"
+ "{\"prodictId\":\"P00003\",\"productName\":\"iPhone 7\"}]";
*/
JSONArray jsonArrayResponse;
JSONObject jsonObject;
try {
Object json = new JSONTokener(jsonString).nextValue();
if (json instanceof JSONObject) {
jsonObject = new JSONObject(jsonString);
if (jsonObject != null) {
System.out.println(jsonObject.toString());
}
} else if (json instanceof JSONArray) {
jsonArrayResponse = new JSONArray(jsonString);
if (jsonArrayResponse != null && jsonArrayResponse.length() > 0) {
System.out.println(jsonArrayResponse.toString());
}
}
} catch (JSONException e) {
e.printStackTrace();
}
当我尝试转换来自服务器的以下 JSON 响应字符串时出现此错误。我想根据服务器的响应处理 JSONObject 或 JSONArray,因为大多数时候它 returns JSONArray.
JSON 来自服务器的响应
jsonString = {"message":"No Results found!","status":"false"}
Java代码如下
try
{
JSONArray jsonArrayResponse = new JSONArray(jsonString);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
{
if(jsonArrayResponse != null && jsonArrayResponse.length() > 0)
{
getCancelPurchase(jsonArrayResponse.toString());
}
}
}
catch(JSONException e)
{
e.printStackTrace();
}
错误日志:
org.json.JSONException: Value {"message":"No Results found!","status":"false"} of type org.json.JSONObject cannot be converted to JSONArray
at org.json.JSON.typeMismatch(JSON.java:111)
at org.json.JSONArray.<init>(JSONArray.java:96)
at org.json.JSONArray.<init>(JSONArray.java:108)
谁能帮帮我。
谢谢
您的回复 {"message":"No Results found!","status":"false"}
不是数组。它是一个对象。在您的代码中使用 JSONObject
而不是 JSONArray
。
提示:数组包含在方括号[ ] 中,对象包含在大括号{}中。
根据您对回答 1 的评论,您可以做的是
String data = "{ ... }";
Object json = new JSONTokener(data).nextValue();
if (json instanceof JSONObject)
//you have an object
else if (json instanceof JSONArray)
//you have an array
我通过编写以下代码解决了这个问题[礼貌@Optional]
String jsonString = "{\"message\":\"No Results found!\",\"status\":\"false\"}";
/* String jsonString = "[{\"prodictId\":\"P00001\",\"productName\":\"iPhone 6\"},"
+ "{\"prodictId\":\"P00002\",\"productName\":\"iPhone 6 Plus\"},"
+ "{\"prodictId\":\"P00003\",\"productName\":\"iPhone 7\"}]";
*/
JSONArray jsonArrayResponse;
JSONObject jsonObject;
try {
Object json = new JSONTokener(jsonString).nextValue();
if (json instanceof JSONObject) {
jsonObject = new JSONObject(jsonString);
if (jsonObject != null) {
System.out.println(jsonObject.toString());
}
} else if (json instanceof JSONArray) {
jsonArrayResponse = new JSONArray(jsonString);
if (jsonArrayResponse != null && jsonArrayResponse.length() > 0) {
System.out.println(jsonArrayResponse.toString());
}
}
} catch (JSONException e) {
e.printStackTrace();
}