【问题标题】:Android and how to change a string object to json objectAndroid以及如何将字符串对象更改为json对象
【发布时间】:2011-11-14 16:55:06
【问题描述】:

我正在尝试使用 RESTful 服务从我的服务器获取响应,我以 json 格式将其取回,更改为字符串变量,然后尝试从字符串变量更改为 json 对象,但我在这里遇到错误是我的班级,在我的班级是我的堆栈跟踪,然后是我的字符串变量之后,当我尝试从字符串转换为 json 对象时发生错误,感谢您的帮助:

private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            String response = "";
            for (String url : urls) {
                DefaultHttpClient client = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(url);
                try {
                    HttpResponse execute = client.execute(httpGet);
                    InputStream content = execute.getEntity().getContent();

                    BufferedReader buffer = new BufferedReader(
                            new InputStreamReader(content));
                    String s = "";
                    while ((s = buffer.readLine()) != null) {
                        response += s;
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            try {
                //JSONObject json = new JSONObject(response);
                JSONObject data = new JSONObject(response).getJSONObject("type");

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return response;
        }

11-14 09:53:26.192:W/System.err(560):org.json.JSONException:值 [{"type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0373889/","label":"Harry Potter und der Orden des 凤凰","videoinfo":{"id":"humvideo:0373889","title":"哈利波特与 秩序之神 凤凰”,“身高”:480,“覆盖”:“BYU”,“状态”:“允许”,“主题”:“哈利 Potter,magic","description":"Lord Voldemort ist zuruckgekehrt, doch das Zaubereiministerium tut alles, um diese Tatsache der Geme ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2007-04-11"}},{ "type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0330373/","label":"Harry 波特时代 Feuerkelch","videoinfo":{"id":"humvideo:0330373","title":"哈利波特 下 Feuerkelch","height":480,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic","description":"Das Grosse Abenteuer beginnt, als der Feuerkelch Harry Potters Namen freigibt und Harry damit Teilne ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2005-11-18"}},{ "type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0304141/","label":"Harry Potter und der Gefangene von 阿斯卡班","videoinfo":{"id":"humvideo:0304141","title":"哈利波特 德格凡热内冯 Askaban","height":480,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic","description":"Wahrend die abscheuliche Tante Magda uber den Nachthimmel schwebt, kehrt Harry nach Hogwarts zuruck, ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2003-06-04"}},{ "type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0295297/","label":"Harry 波特与死卡默 Desschreckens","videoinfo":{"id":"humvideo:0295297","title":"哈利 波特与死卡默 Desschreckens","height":480,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic","description":"Fliegende Autos, gemeingefahliche Baume und die Warnung eines mysteriosen Hauselfen - so begin fu ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2002-11-15"}},{ "type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0241527/","label":"Harry 波特与德斯坦德 Weisen","videoinfo":{"id":"humvideo:0241527","title":"哈利波特与 德施泰德 Weisen","height":480,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic","description":"In der zauberhaften Verfilmung J.K. Rowlings Weltbestseller erfahrt Harry Potter an seinem 11. Gebur ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2001-11-16"}}] org.json.JSONArray 类型的无法转换为 JSONObject 11-14 09:53:26.232:W/System.err(560):在 org.json.JSON.typeMismatch(JSON.java:111) 11-14 09:53:26.242: W/System.err(560):在 org.json.JSONObject.(JSONObject.java:158) 11-14 09:53:26.252: W/System.err(560): 在 org.json.JSONObject.(JSONObject.java:171) 11-14 09:53:26.262: W / System.err(560):在 de.vogella.android.asynctask.ReadWebpageAsyncTask$DownloadWebPageTask.doInBackground(ReadWebpageAsyncTask.java:56) 11-14 09:53:26.332: W/System.err(560): 在 de.vogella.android.asynctask.ReadWebpageAsyncTask$DownloadWebPageTask.doInBackground(ReadWebpageAsyncTask.java:1) 11-14 09:53:26.352: W/System.err(560): 在 android.os.AsyncTask$2.call(AsyncTask.java:264) 11-14 09:53:26.372: W / System.err(560):在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 11-14 09:53:26.382: W/System.err(560): 在 java.util.concurrent.FutureTask.run(FutureTask.java:137) 11-14 09:53:26.392:W/System.err(560):在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 11-14 09:53:26.402:W / System.err(560):在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 11-14 09:53:26.412: W/System.err(560): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 11-14 09:53:26.422: W/System.err(560): 在 java.lang.Thread.run(Thread.java:856) 11-14 09:53:34.635: D/dalvikvm(169):GC_CONCURRENT 释放 396K,7% 释放 7350K/7879K,暂停 21ms+9ms

字符串变量:

[ { "type": "HumVideoMovingImage",
“视频信息”:{“状态”:“允许”,
"description": "Lord Voldemort ist zuruckgekehrt, doch das Zaubereiministerium tut alles, um diese Tatsache der Geme ...",
“身高”:480,“覆盖率”:“BYU”,“日期”: "2007-04-11", "id": "humvideo:0373889",
“主题”:“哈利波特,魔法”,“语言”:[“de”],
“权利”:“共享”,“标题”:“哈利波特与秩序之光” des Phonix”,“运行时间”:7200,“宽度”:716 }, “地点”: “http://hummedia.byu.edu/watch/humvideo:0373889/”、“标签”: “哈利波特与凤凰秩序”}, {
“类型”:“HumVideoMovingImage”,“视频信息”:{
“状态”:“允许”,“描述”:“Das Grosse Abenteuer” begint, als der Feuerkelch Harry Potters Namen freigibt und Harry damit Teilne ...”,“身高”:480,“覆盖率”: “BYU”、“日期”:“2005-11-18”、“id”: "humvideo:0330373", "subject": "哈利波特,魔法",
“语言”:[“de”],“权利”:“共享”,
"title": "Harry Potter und der Feuerkelch",
“运行时间”:7200,“宽度”:716 },
“位置”:“http://hummedia.byu.edu/watch/humvideo:0330373/”,
“标签”:“哈利波特与费尔克尔奇”},{ “类型”:“HumVideoMovingImage”,“视频信息”:{
“状态”:“允许”,“描述”:“Wahrend die abscheuliche Tante Magda uber den Nachthimmel schwebt, kehrt Harry nach Hogwarts zuruck, ...", "height": 480,
“覆盖”:“BYU”,“日期”:“2003-06-04”,
“id”:“humvideo:0304141”,“主题”:“哈利 Potter,magic", "language": ["de"], "rights": "shared", "title": "Harry Potter und der Gefangene von 阿斯卡班”,“运行时间”:7200,“宽度”:716
}, “地点”: “http://hummedia.byu.edu/watch/humvideo:0304141/”、“标签”: 《哈利·波特与格凡吉娜·冯·阿斯卡班》},
{“类型”:“HumVideoMovingImage”,“视频信息”:{ “状态”:“允许”,“描述”:“Fliegende Autos, gemeingefahrliche Baume und die Warnung eines mysteriosen Hauselfen - 所以开始fu ...”,“身高”:480,“覆盖率”: “BYU”、“日期”:“2002-11-15”、“id”: "humvideo:0295297", "subject": "哈利波特,魔法",
“语言”:[“de”],“权利”:“共享”,
"title": "Harry Potter und die Kammer Desschreckens",
“运行时间”:7200,“宽度”:716 },
“位置”:“http://hummedia.byu.edu/watch/humvideo:0295297/”,
"label": "Harry Potter und die Kammer Desschreckens" },
{“类型”:“HumVideoMovingImage”,“视频信息”:{ “状态”:“允许”,“描述”:“在 der zauberhaften Verfilmung J.K.罗琳世界畅销书 erfahrt Harry Potter an seinem 11. Gebur ...”,“身高”:480,“覆盖率”:“BYU”,“日期”:“2001-11-16”,“id”: "humvideo:0241527", "subject": "哈利波特,魔法",
“语言”:[“de”],“权利”:“共享”,
"title": "Harry Potter und der Stein der Weisen",
“运行时间”:7200,“宽度”:716 },
“位置”:“http://hummedia.byu.edu/watch/humvideo:0241527/”,
"label": "Harry Potter und der Stein der Weisen" }

    ]

通过尝试使用以下代码: JSONObject jObject = new JSONObject(response);

我仍然收到错误,这是堆栈跟踪:

11-14 10:03:02.713: W/System.err(622): org.json.JSONException: Value [{"type":"HumVideoMovingImage","location":"http://hummedia.byu .edu/watch/humvideo:0373889/","label":"Harry Potter und der Orden des Phonix","videoinfo":{"id":"humvideo:0373889","title":"Harry Potter und der Orden des Phonix","height":480,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic","description":"Lord Voldemort ist zuruckgekehrt, doch das Zaubereiministerium tut alles, um diese Tatsache der Geme ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2007- 04-11"}},{"type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0330373/","label":"Harry Potter und der Feuerkelch" ,"videoinfo":{"id":"humvideo:0330373","title":"Harry Potter und der Feuerkelch","height":480,"coverage":"BYU","status":"allowed", "subject":"Harry Potter,magic","description":"Das Grosse Abenteuer begint, als der Feuerkelch Harry Potters Namen freigibt und Harry damit Teilne ...", "width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2005-11-18"}},{"type":" HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0304141/","label":"Harry Potter und der Gefangene von Askaban","videoinfo":{"id":" humvideo:0304141","title":"Harry Potter und der Gefangene von Askaban","height":480,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic ","description":"Wahrend die abscheuliche Tante Magda uber den Nachthimmel schwebt, kehrt Harry nach Hogwarts zuruck, ...","width":716,"rights":"shared","language":["de" ],"runningtime":7200,"date":"2003-06-04"}},{"type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo: 0295297/","label":"Harry Potter und die Kammer Desschreckens","videoinfo":{"id":"humvideo:0295297","title":"Harry Potter und die Kammer Desschreckens","height":480 ,"coverage":"BYU","status":"allowed","subject":"Harry Potter,magic","description":"Fliegende Autos, gemeingefahrliche Baume und die Warnung ein es mysteriosen Hauselfen - 所以开始 fu ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":"2002-11 -15"}},{"type":"HumVideoMovingImage","location":"http://hummedia.byu.edu/watch/humvideo:0241527/","label":"Harry Potter und der Stein der Weisen ","videoinfo":{"id":"humvideo:0241527","title":"Harry Potter und der Stein der Weisen","height":480,"coverage":"BYU","status":"允许","subject":"哈利波特,魔法","description":"In der zauberhaften Verfilmung JK Rowlings Weltbestseller erfahrt Harry Potter an seinem 11. Gebur ...","width":716,"rights":"shared","language":["de"],"runningtime":7200,"date":" org.json.JSONArray 类型的 2001-11-16"}}] 无法转换为 JSONObject 11-14 10:03:02.732: W/System.err(622): 在 org.json.JSON.typeMismatch(JSON.java:111) 11-14 10:03:02.752: W/System.err(622): 在 org.json.JSONObject.(JSONObject.java:158) 11-14 10:03:02.762: W/System.err(622): 在 org.json.JSONObject.(JSONObject.java:171) 11-14 10:03:02.822: W/System.err(622): 在 de.vogella.android.asynctask.ReadWebpageAsyncTask$DownloadWebPageTask.doInBackground(ReadWebpageAsyncTask.java:56) 11-14 10:03:02.842: W/System.err(622): 在 de.vogella.android.asynctask.ReadWebpageAsyncTask$DownloadWebPageTask.doInBackground(ReadWebpageAsyncTask.java:1) 11-14 10:03:02.852: W/System.err(622): 在 android.os.AsyncTask$2.call(AsyncTask.java:264) 11-14 10:03:02.872: W/System.err(622): 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 11-14 10:03:02.892: W/System.err(622): 在 java.util.concurrent.FutureTask.run(FutureTask.java:137) 11-14 10:03:02.902: W/System.err(622): 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 11-14 10:03:02.912: W/System.err(622): 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 11-14 10:03:02.922: W/System.err(622): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 11-14 10:03:02.942: W/System.err(622): at java.lang.Thread.run(Thread.java:856)

谢谢。

【问题讨论】:

    标签: android json rest


    【解决方案1】:

    你必须使用下面的代码

    import org.json.JSONObject;
    
    JSONObject jObject = new JSONObject(response);
    

    其余的你可以用同样的方式处理

    【讨论】:

    • 对不起,我忘了说我有导入:“import org.json.JSONObject;”
    • 我尝试了上述解决方案,但仍然出现错误,我已使用新的堆栈跟踪更新了我的问题。谢谢。
    • 你能试试 JSONArray dataArray = new JSONArray(response); JSONObject menuObject = dataArray.getJSONObject(0); menuObject.getString("type")
    【解决方案2】:

    从服务器返回的 JSON 是一个 Array 对象,堆栈跟踪清楚地说明了这一点。 尝试使用 org.json.JSONArray 代替 org.json.JSONObject:

    org.json.JSONArray jsonArray = new org.json.JSONArray(response);
    

    【讨论】:

    • 在堆栈跟踪中查找此行:type org.json.JSONArray 无法转换为 JSONObject 11-14 10:03:02.732: W/System.err(622): at org.json.JSON.typeMismatch(JSON.java:111)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多