【发布时间】:2015-06-11 01:06:25
【问题描述】:
我有一个没有标题的 JSON 数组。
我一直在尝试读取 JSON,但似乎一直失败。
我希望有某种不调用数组名即可解析 JSON 的示例。
任何帮助或指出我的示例方向将不胜感激。我将在下面附上我遇到错误的代码。这两个 url 是我试图读入的数据。
https://www.descartes.com/rest/glossary-items
https://www.descartes.com/rest/glossary-sources
JsonParser:
public class JsonParser {
static InputStream is = null;
static JSONArray jarray = null;
static String json = "";
public JSONArray getJSONFromUrl(String url1) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url1);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e("==>", "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// try parse the string to a JSON object
try {
jarray = new JSONArray(builder.toString());
// System.out.println(""+jarray);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jarray;
}
}
doInBackground:
protected Void doInBackground(Void... arg0) {
String str = "";
JsonParser sh = new JsonParser();
// Making a request to url and getting response
String jsonStr = sh.getJSONFromUrl(url1, JsonParser.GET);
if (jsonStr != null){
try{
JSONArray jsonArr = new JSONArray(jsonArr);
test = jsonArr.getJSONObje(str);
// looping through All Contacts
for (int i = 0; i <= str.length(); i++) {
JSONObject c = str.getJSONObject(i);
String tid = c.getString(TAG_TID);
String title = c.getString(TAG_TITLE);
String acronym = c.getString(TAG_ACRONYM);
String description = c.getString(TAG_DESCRIPTION);
// tmp hashmap for single contact
HashMap<String, String> contact = new HashMap<String, String>();
// adding each child node to HashMap key => value
contact.put(TAG_TID, tid);
contact.put(TAG_TITLE, title);
contact.put(TAG_ACRONYM, acronym);
contact.put(TAG_DESCRIPTION, description);
// adding contact to contact list
glossaryList.add(contact);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("JsonParser", "Couldn't get any data from the url");
}
return null;
}
【问题讨论】:
-
粘贴 JSON 示例。
标签: android arrays json parsing url