gpt4 book ai didi

java - Json类型不匹配: Cannot convert to string

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:15 24 4
gpt4 key购买 nike

我正在开发一个程序,该程序将发布到服务器并检索 json 对象,然后将其转换为字符串数组。

当我在浏览器上测试结果时,我得到以下结果:

{"Bookname":["Alive-O","All Write Now ","Bun Go Barr 1","Planet Maths","Small World"],"SubjectName":["Religion","English","Irish","Maths","Science"]}

这是我发布和转换字符串的类:

try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://cosy.azurewebsites.net/bookrequest.php");

User user = userLocalStore.getLoggedInUser();

String username = user.username;

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair( "Username", username ));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();


String result = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(result);

JSONArray jsonArray = jsonObject.getJSONArray("Bookname");
BookName = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
BookName[i] = jsonArray.getString(i);
}

// for getting subjectnames
Log.v("we're getting a subject", "2");

jsonArray = jsonObject.getJSONArray("SubjectName");
BookSubject = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
BookSubject[i] = jsonArray.getString(i);
}

}

这是我的日志猫告诉我的:

02-21 18:15:35.538    1436-3694/net.azurewebsites.cosy W/System.err﹕ org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:111)
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:159)
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:172)
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at net.azurewebsites.cosy.Books$getBooks.doInBackground(Books.java:148)
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at net.azurewebsites.cosy.Books$getBooks.doInBackground(Books.java:106)
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
02-21 18:15:35.538 1436-3694/net.azurewebsites.cosy W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
02-21 18:15:35.542 1436-3694/net.azurewebsites.cosy W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
02-21 18:15:35.542 1436-3694/net.azurewebsites.cosy W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
02-21 18:15:35.542 1436-3694/net.azurewebsites.cosy W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
02-21 18:15:35.542 1436-3694/net.azurewebsites.cosy W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

我试图将其用作类中的数组。

最佳答案

该错误表明您正在尝试将 JSONArray 转换为 JSONObject,这意味着此指令:

JSONObject jsonObject = new JSONObject(result);

有问题。您获得的 JSON 很有可能被括号包围(因为您是在浏览器中测试的,而不是在移动设备上测试的)。尝试改变:

JSONObject jsonObject = new JSONObject(result);

JSONArray obj = new JSONArray(result);
JSONObject jsonObject = obj.getJSONObject(0);

关于java - Json类型不匹配: Cannot convert to string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com