gpt4 book ai didi

java - 更改 JSON 函数以使其工作?

转载 作者:行者123 更新时间:2023-11-30 10:55:24 26 4
gpt4 key购买 nike

我这样调用 JSON url:

jsonobject = JSONfunctions
.getJSONfromURL("http://192.168.0.219:90/flexlocation2");
Utils.log("json function: " + jsonobject);

但是那个 json 函数返回 null,并产生 Error parsing data org.json.JSONException: Value !DOCTYPE of type java.lang.String cannot be converted to JSONObject.

这是我的 JSON:

{"flexlocation":[{"flex_id":"12","name":"Jawa Barat"},{"flex_id":"17","name":"Bali"},{"flex_id":"11","name":"DKI Jakarta"},{"flex_id":"16","name":"Banten"}]}

之后我检查了 JSONfunctions 类,这是我从教程中获得的 JSONfunctions 类:

public class JSONfunctions {

public static JSONObject getJSONfromURL(String url) {
InputStream is = null;
String result = "";
JSONObject jArray = null;

// Download JSON data from URL
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();

} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}

// Convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}

try {

jArray = new JSONObject(result);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}

return jArray;
}
}

错误来自这一行:

catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}

我搜索答案,它写道它来自这个“flex_id”:“12”。它写的应该是这样的“flex_id”:12。没有 ””。

信息:当我从我的 json 结果中登录时,结果是 !DOCTYPE html。

但是当我更改原始教程中的 json 时:http://www.androidbegin.com/tutorial/jsonparsetutorial.txt ,结果日志为{

当我的 json 和教程 json 的 json 数组格式与数组名称相同时,是什么导致结果不同 (!DOCTYPE html with {)?

那么,我必须在 jArray = new JSONObject(result); 行上向 JSONfunctions 添加什么?让它与“”一起工作?结果变化 = sb.toString();?

最佳答案

  1. 检查您的 sb.toString() 值。如果它以您指定的正确格式返回答案,则将结果转换为 JSONObject。如果读取 sb.toString() 时出错,则错误在 JSON 结果中。
  2. 当您的 json 响应中存在语法错误时,就会出现 DOCTYPE 错误。试试这个,

    JSONObject obj=new JSONObject(结果);JSONArray array=obj.getJSONArray("flexlocation");for(int i=0;i<array.length();i++){JSONObject object=array.getJSONObject(i);String flexid=object.getString("flex_id");字符串名称=object.getString("名称");

关于java - 更改 JSON 函数以使其工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359312/

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