gpt4 book ai didi

android - 麻烦 JsonObject Parsing cannot converted to jsonarray

转载 作者:搜寻专家 更新时间:2023-11-01 08:55:42 24 4
gpt4 key购买 nike

你好。我有一行 json 数据@我的网络服务。所有 Json 数据都以这种格式提供,只有 URL 和链接。据我所知,它是一个 JsonObject。简短地说我请求,结果总是以 url 结尾。所以输出是:

{"Url":"www.google.com"}

这就是我所做的

            JSONArray json = jParser.getJSONFromUrl(url);

try {
ListBasedList.clear();
//for each loop til JSON data
for(int i = 0; i < json.length(); i++){
JSONObject c = json.getJSONObject(i);

String json_url = c.getString(TAG_Url);

if(json_url.equals(0) && json_url.equals(""))
{
LinearLayout lin_footer = (LinearLayout) findViewById(R.id.footer_layoutMain);
lin_footer.setVisibility(View.GONE);
}

HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_Url, json_url);

ListBasedList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
Log.e("JSON Parser fejl", "fejl da man prøve og hente data fra server " + e.toString());
}
return null;
}

此处发生错误

logcat 告诉我这个:

JSONObject无法转成jsonarray

那么我怎样才能得到链接而不是错误呢?

更新 #1 --> Logcat 完整错误

    10-01 13:34:45.685: E/JSON Parser(24256): Error parsing data org.json.JSONException: Value {"url":"www.google.com"} of type org.json.JSONObject cannot be converted to JSONArray

更新 #2 --> JsonParser 类

public class JSONParser {
static InputStream is = null;
static String json = "";
JSONArray jsonarr=null;
// konstruktor
public JSONParser() {
}

public JSONArray getJSONFromUrl(String url) {
JSONArray jsonarr=null;

// HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
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();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// json array paser til string
try {
jsonarr = new JSONArray(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// retunerer json object tilbage
return jsonarr;
}
}

最佳答案

您正在从响应中获取单个 Json 对象。因为 {"Url":"www.google.com"} 是一个 JSONObject。

所以行

JSONArray json = jParser.getJSONFromUrl(url);

应该是

JSONObject json = jParser.getJSONFromUrl(url);

在读取数据时你只需要

String json_url = json.getString(TAG_Url);

而不是使用 for 循环。


查看更新后的类

public class JSONParser {
static InputStream is = null;
static String json = "";
JSONObject jsonObject = null; // Updated here

// konstruktor
public JSONParser() {
}

public JSONObject getJSONFromUrl(String url) {
jsonObject = null; // Updated here

// HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
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();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// json array paser til string
try {
jsonObject = new JSONObject(json); // Updated here
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// retunerer json object tilbage
return jsonObject; // Updated here
}
}

这将适用于您当前的 json。请参阅 //Updated here 以了解我更新的内容。

关于android - 麻烦 JsonObject Parsing cannot converted to jsonarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19114987/

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