Java 无法从JSOnObject获取值

Java 无法从JSOnObject获取值,java,android,json,arrays,jsonobject,Java,Android,Json,Arrays,Jsonobject,我试图从JSONObject中提取一些值,如下所示: 我的代码如下: String[] aJsonString = new String[10]; JSONObject jObject = null; try { JSONArray arr = new JSONArray(result); for (int i = 0; i < arr.length(); i++) {

我试图从JSONObject中提取一些值,如下所示:

我的代码如下:

        String[] aJsonString = new String[10];
        JSONObject jObject = null;
        try {
            JSONArray arr = new JSONArray(result);
            for (int i = 0; i < arr.length(); i++) {
                jObject = arr.getJSONObject(i);
            }
            aJsonString[0] = jObject.getString("CourseId");
            aJsonString[1] = jObject.getString("CourseObjective");
            aJsonString[2] = jObject.getString("CourseDescription");
            aJsonString[3] = jObject.getString("Lecturer");
            aJsonString[4] = jObject.getString("Venue");

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
String[]aJsonString=新字符串[10];
JSONObject jObject=null;
试一试{
JSONArray arr=新JSONArray(结果);
对于(int i=0;i
但当我运行它时,我会得到以下错误:

08-23 17:44:07.849: W/System.err(3150): org.json.JSONException: Value {"CourseDescription":"AWEsome shiznit","Lecturer":"Mike","Venue":"Senior Infos Lab","CourseObjective":"To Be Awesome Sauce","CourseId":"INFO3003"} of type org.json.JSONObject cannot be converted to JSONArray
08-23 17:44:07.859: W/System.err(3150):     at org.json.JSON.typeMismatch(JSON.java:111)
08-23 17:44:07.859: W/System.err(3150):     at org.json.JSONArray.<init>(JSONArray.java:91)
08-23 17:44:07.859: W/System.err(3150):     at org.json.JSONArray.<init>(JSONArray.java:103)
08-23 17:44:07.859: W/System.err(3150):     at com.example.wsis.CourseDetails$ServerCalling.onPostExecute(CourseDetails.java:116)
08-23 17:44:07.859: W/System.err(3150):     at com.example.wsis.CourseDetails$ServerCalling.onPostExecute(CourseDetails.java:1)
08-23 17:44:07.869: W/System.err(3150):     at android.os.AsyncTask.finish(AsyncTask.java:602)
08-23 17:44:07.869: W/System.err(3150):     at android.os.AsyncTask.access$600(AsyncTask.java:156)
08-23 17:44:07.869: W/System.err(3150):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
08-23 17:44:07.869: W/System.err(3150):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 17:44:07.869: W/System.err(3150):     at android.os.Looper.loop(Looper.java:154)
08-23 17:44:07.879: W/System.err(3150):     at android.app.ActivityThread.main(ActivityThread.java:4945)
08-23 17:44:07.879: W/System.err(3150):     at java.lang.reflect.Method.invokeNative(Native Method)
08-23 17:44:07.879: W/System.err(3150):     at java.lang.reflect.Method.invoke(Method.java:511)
08-23 17:44:07.879: W/System.err(3150):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-23 17:44:07.889: W/System.err(3150):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-23 17:44:07.889: W/System.err(3150):     at dalvik.system.NativeStart.main(Native Method)
08-23 17:44:07.849:W/System.err(3150):org.json.JSONException:Value{“CourseDescription”:“AWEsome shiznit”,“讲师”:“Mike”,“场所”:“Senior Infos Lab”,“CourseObjective”:“To Be AWEsome sause”,“CourseId”:“INFO3003”}类型的org.json.JSONObject无法转换为JSONArray
08-23 17:44:07.859:W/System.err(3150):位于org.json.json.typemissmatch(json.java:111)
08-2317:44:07.859:W/System.err(3150):位于org.json.JSONArray(JSONArray.java:91)
08-2317:44:07.859:W/System.err(3150):位于org.json.JSONArray(JSONArray.java:103)
08-23 17:44:07.859:W/System.err(3150):位于com.example.wsis.CourseDetails$ServerCalling.onPostExecute(CourseDetails.java:116)
08-23 17:44:07.859:W/System.err(3150):位于com.example.wsis.CourseDetails$ServerCalling.onPostExecute(CourseDetails.java:1)
08-23 17:44:07.869:W/System.err(3150):在android.os.AsyncTask.finish(AsyncTask.java:602)上
08-23 17:44:07.869:W/System.err(3150):在android.os.AsyncTask.access$600(AsyncTask.java:156)
08-23 17:44:07.869:W/System.err(3150):位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
08-23 17:44:07.869:W/System.err(3150):在android.os.Handler.dispatchMessage(Handler.java:99)上
08-23 17:44:07.869:W/System.err(3150):在android.os.Looper.loop(Looper.java:154)上
08-23 17:44:07.879:W/System.err(3150):位于android.app.ActivityThread.main(ActivityThread.java:4945)
08-23 17:44:07.879:W/System.err(3150):位于java.lang.reflect.Method.invokenactive(本机方法)
08-23 17:44:07.879:W/System.err(3150):位于java.lang.reflect.Method.invoke(Method.java:511)
08-23 17:44:07.879:W/System.err(3150):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-23 17:44:07.889:W/System.err(3150):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-23 17:44:07.889:W/System.err(3150):在dalvik.System.NativeStart.main(本机方法)
我知道将jsonarray转换为对象(反之亦然)会有问题,但我自己还不太了解如何解决这个问题。有人能提供建议吗?

你的JSON

{ 
    "CourseId": "INFO3003",   
    "CourseObjective": "To Be Awesome Sauce",
    "CourseDescription": "AWEsome shiznit",
    "Lecturer": "Mike",
    "Venue": "Senior Infos Lab"
}
这是一个JSON对象,不是JSON数组。因此,与其使用:

JSONArray arr = new JSONArray(result);
您应该使用以下选项:

JSONObject json = new JSONObject(result);

您拥有的是一个json对象。试试下面的方法

{ // json object node
    "CourseId": "INFO3003",   
    "CourseObjective": "To Be Awesome Sauce",
    "CourseDescription": "AWEsome shiznit",
    "Lecturer": "Mike",
    "Venue": "Senior Infos Lab"
}
try {
JSONObject jb = new JSONObject("myjson");
String id = jb.getString("CourseId");
String CourseObjective = jb.getString("CourseObjective");
String CourseDescription = jb.getString("CourseDescription");
String Lecturer = jb.getString("Lecturer");
String Venue = jb.getString("Venue");
} catch (JSONException e) {
    e.printStackTrace();
} 

例外情况是,您有一个jsonobject,但您尝试使用JSONArray。我真的建议您看一看—JSON对象被
{…}
包围—JSON数组由
[…]
包围。这真的不是一个难理解的概念。