Android 为什么可以';不能将JSONObject转换为JSONArray

Android 为什么可以';不能将JSONObject转换为JSONArray,android,json,multithreading,Android,Json,Multithreading,我已经从我的服务器获得了Json。 以下是我的错误信息: JSONObject quotesObject = new JSONObject(responseStr); Log.e("leb","4"); //get it as array JSONArray projects = quotesObject.getJSONArray("project"); 两者都是为了不同的目的和解决不同的问题而

我已经从我的服务器获得了Json。 以下是我的错误信息:

  JSONObject quotesObject = new JSONObject(responseStr);
                Log.e("leb","4");
                //get it as array
                JSONArray projects = quotesObject.getJSONArray("project");

两者都是为了不同的目的和解决不同的问题而开发的,因为对象可以在单个对象中存储多个值,而对于JSONArray,可以保存多个对象并遍历它们


如果由于转换原因而出现问题,则解析逻辑中存在问题。正确分析JSON输出,然后对其进行解析。

在您的响应中,您没有任何类型的
JSONArray
。它只包含
JSONObject
。因此,您必须按如下方式对其进行分析:

只需从给定字符串创建一个
JSONObject
,然后从JSONObject中提取所有值,如下所示:

12-19 11:56:17.314: W/System.err(456): org.json.JSONException: Value {"category":"1","Body":"eeee","Price":"110.0","ID":"1","NowPrice":"10.0","idRef":"1","user":"1","Title":"I"} at project of type org.json.JSONObject cannot be converted to JSONArray

12-19 11:56:17.374: W/System.err(456):  at org.json.JSON.typeMismatch(JSON.java:96)
12-19 11:56:17.374: W/System.err(456):  at org.json.JSONObject.getJSONArray(JSONObject.java:548)
12-19 11:56:17.413: W/System.err(456):  at com.supinfo.sup.rest.ProjectRestDao$RestTaskGetAll.doInBackground(ProjectRestDao.java:197)
12-19 11:56:17.434: W/System.err(456):  at com.supinfo.sup.rest.ProjectRestDao$RestTaskGetAll.doInBackground(ProjectRestDao.java:1)
12-19 11:56:17.434: W/System.err(456):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-19 11:56:17.434: W/System.err(456):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-19 11:56:17.434: W/System.err(456):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-19 11:56:17.434: W/System.err(456):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
12-19 11:56:17.434: W/System.err(456):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
12-19 11:56:17.434: W/System.err(456):  at java.lang.Thread.run(Thread.java:1096)

还用于检查当前json对象是否包含给定名称的映射

,因为此处显示的json不是数组。此json表示json对象而不是json数组!服务器响应中没有JSON数组。请显示整个JSON响应。
//create json object form responce string
JSONObject object = new JSONObject(responseStr);

//get nickname
 String category= object.getString("category");
 String body=object.getString("Body");
///.... get other value for object