org.json.JSONObject 类型的值无法转换为 JSONArray
Posted
技术标签:
【中文标题】org.json.JSONObject 类型的值无法转换为 JSONArray【英文标题】:Value of type org.json.JSONObject cannot be converted to JSONArray 【发布时间】:2013-08-24 20:45:27 【问题描述】:当我从另一个活动返回字符串并尝试将其转换为 JSONArray 时,程序会显示:
08-22 14:51:35.313: E/YourCartActivity(1134): Error parsing data
org.json.JSONException:
Value "yourCart_totalPrice":"5500.00","yourCart_productName":"AAA",
"yourCart_productImg":"http:\/\/10.0.2.2\/appserv\/products\/aaa02.jpg",
"yourCart_productID":"0000002",
"yourCart_productAmount":"2",
"yourCart_shopID":"001"
of type org.json.JSONObject cannot be converted to JSONArray
有人知道如何解决这个问题吗?
这是我的代码:
String json = yourCartConnect.getYourCartDetails();
try
JSONArray jResult = new JSONArray(json);
for(int i=0;i<json.length();i++)
JSONObject f = jResult.getJSONObject(i);
YourCartEntry resultRow = new YourCartEntry();
resultRow.setYourCart_shopID(f.getString("yourCart_shopID"));
resultRow.setYourCart_totalPrice(f.getString("yourCart_totalPrice"));
resultRow.setYourCart_productName(f.getString("yourCart_productName"));
resultRow.setYourCart_productID(f.getString("yourCart_productID"));
resultRow.setYourCart_productImg(f.getString("yourCart_productImg"));
resultRow.setYourCart_productAmount(f.getString("yourCart_productAmount"));
yourCartEntries.add(resultRow);
setList(yourCartEntries);
catch (JSONException e)
Log.e("YourCartActivity", "Error parsing data " + e.toString());
errorConnectToServer();
【问题讨论】:
你的 json 是一个 json 对象,而不是一个 json 数组 ... 您是否使用 php 构建 JSON 响应字符串? 请贴出完整代码! 您正在解析 JsonArray 中的 Jsonobject。 [] 内的数据是 JsonArray, 内的键值对是 JSONObject 【参考方案1】:试试这个代码:
String json = yourCartConnect.getYourCartDetails();
try
JSONObject jsonObject = new JSONObject(json)
JSONArray jResult = jsonObject.getJSONArray("Your array key");
for(int i=0;i<jResult.length();i++)
JSONObject f = jResult.getJSONObject(i);
// write your remaining code here
setList(yourCartEntries);
catch (JSONException e)
Log.e("YourCartActivity", "Error parsing data " + e.toString());
errorConnectToServer();
【讨论】:
【参考方案2】:试试这个代码..
try
JSONArray jArray = new JSONArray("your JSON result........");
JSONObject json_data = null;
StringBuilder print = new StringBuilder();
for (int i = 0; i < jArray.length(); i++)
json_data = jArray.getJSONObject(i);
System.out.println("json_data : " + json_data);
System.out.println("\n");
print.append(json_data.getString("yourCart_shopID") + ", " +
json_data.getString("yourCart_totalPrice") + ", " +
json_data.getString("yourCart_productName") + ", " +
json_data.getString("yourCart_productID") + ", " +
json_data.getString("yourCart_productImg") + ", " +
json_data.getString("yourCart_productAmount") + "\n");
yourCartEntries.add(print.toString());
setList(yourCartEntries);
catch (JSONException e1)
e1.printStackTrace();
【讨论】:
【参考方案3】:你有 JSONObject 字符串,而不是 JSONArray,
JSONArray here
EG:
["yourCart_totalPrice":"5500.00","yourCart_productName":"AAA","yourCart_productImg":"http:\/\/10.0.2.2\/appserv\/products\/aaa02.jpg","yourCart_productID":"0000002","yourCart_productAmount":"2","yourCart_shopID":"001"]
【讨论】:
【参考方案4】:试试这个..
String json = yourCartConnect.getYourCartDetails();
try
if(!TextUtils.isEmpty(json))
JSONObject f=new JSONObject(json);
YourCartEntry resultRow = new YourCartEntry();
resultRow.setYourCart_shopID(f.getString("yourCart_shopID"));
resultRow.setYourCart_totalPrice(f.getString("yourCart_totalPrice"));
resultRow.setYourCart_productName(f.getString("yourCart_productName"));
resultRow.setYourCart_productID(f.getString("yourCart_productID"));
resultRow.setYourCart_productImg(f.getString("yourCart_productImg"));
resultRow.setYourCart_productAmount(f.getString("yourCart_productAmount"));
setList(resultRow);
catch (JSONException e)
Log.e("YourCartActivity", "Error parsing data " + e.toString());
errorConnectToServer();
【讨论】:
以上是关于org.json.JSONObject 类型的值无法转换为 JSONArray的主要内容,如果未能解决你的问题,请参考以下文章
org.json.JSONObject & org.json.JSONArray
值类型 org.json.JSONObject 无法转换为 JSONArray
未找到 Java 类型、类 org.json.JSONObject.... 和 MIME 媒体类型、application/json 的消息正文阅读器
如何使用 ResponseEntity 返回 JSONObject 而不是 HashMap? (未找到类型返回值的转换器:类 org.json.JSONObject)