JSON.typesmatch(JSON.java:112)与url JSON文件不匹配
这是我的方法调用JSON.typesmatch(JSON.java:112)与url JSON文件不匹配,java,android,json,Java,Android,Json,这是我的方法调用 if(guest){ new JsonTask().execute("URL"); }else{ new AsyncTaskGetMareker().execute(); } 这是我的方法: private class JsonTask extends AsyncTask<String, String, String> { protected void onPreExecute() { super.onPr
if(guest){
new JsonTask().execute("URL");
}else{
new AsyncTaskGetMareker().execute();
}
这是我的方法:
private class JsonTask extends AsyncTask<String, String, String> {
protected void onPreExecute() {
super.onPreExecute();
}
protected String doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line+"\n");
Log.d("Response: ", "> " + line); //here u ll get whole response...... :-)
}
return buffer.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result !=null){
for (int i =0; i <result.length(); i++){
JSONObject jsonObject= null;
try {
JSONObject json = new JSONObject(result);
JSONObject jsonResponse = json.getJSONObject("response");
String name = jsonResponse.getString("store_name");
String lat = jsonResponse.getString("latitude");
String lang=jsonResponse.getString("longitude");
});
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}
我在这个网站上找到了这段代码,并试图在我的项目中实现它。
我确保在检查时加载了本地或外部文件。
我在代码中犯了什么错误?请帮助我…我不太懂英语,请理解并原谅我帮助我的答案:
@覆盖
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
如果(结果!=null){
JSONArray JSONArray=null;
试一试{
jsonarray=新jsonarray(结果);
for(int i=0;i
第112行是哪一行?onPostExecute()中的一个?我不太了解这些类,但我想问题是,你的JSON结果实际上是一个数组,而不是一个对象,但你试图将它解析为一个JSONObject。据我所知,你通过URL得到的结果是JSON数组而不是JSONObject@mrgrechkinn很可能,我不知道如何修复它。@UrbanSide您可以提供:一个来自URL的完整JSON响应;并与我们分享您的修改代码。
org.json.JSONException: Value [{"id":1,"store":"дом","category_id":11,"latitude":
2020-02-10 14:24:01.689 13767-13767/? W/System.err: at org.json.JSON.typeMismatch(JSON.java:112)
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result !=null){
JSONArray jsonarray = null;
try {
jsonarray = new JSONArray(result);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonObject= null;
try {
JSONObject obj = jsonarray.getJSONObject(i);
String name = obj.getString("store_name");
String lat = obj.getString("latitude");
String lang=obj.getString("longitude");
String desc=obj.getString("store_desc");
String oxr=obj.getString("telephone");
String sost=obj.getString("keywords");
int cat=obj.getInt("category_id");
int id=obj.getInt("id");
Log.e("100rad",""+i);
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}