我一直在研究如何從服務器查詢JSON數據並解析它以便在我的應用程序中使用。但是,我發現了許多不同的方法來做同樣的事情。我意識到有不同的JSON解析器,所以我們假設我堅持使用標準解析器。我的主要問題與服務器請求有關。這是我目前我MapActivityAndroid:處理JSON數據的最佳做法
private class DownloadJSON extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a Progress Dialog
mProgressDialog = new ProgressDialog(MapActivity.this);
mProgressDialog.setTitle("Downloading Data");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// Create an array
arraylist = new ArrayList<HashMap<String, String>>();
try {
// Retrieve JSON Objects from the given URL address
jsonarray = JSONFunctions.getJSONfromURL("myurl");
for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject obj = jsonarray.getJSONObject(i);
// Retrieve JSON Objects
map.put("id", String.valueOf(i));
map.put("name", obj.getString("name"));
// Set the JSON Objects into the array
arraylist.add(map);
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
// Do something with data
mProgressDialog.dismiss();
}
}
代碼如果我JSON數據的結構看起來怪異,那是因爲它是存儲在一個未命名的數組,所以我不必須先創建一個對象。無論如何......我基本上是基於this tutorial。但是,他們有更多的代碼。這一切是否真的有必要?我不這麼認爲。我搜索了更多,發現其他使用了一半代碼的例子,基本上做了同樣的事情。因此,作爲一名開始的Android程序員,我的問題是處理JSON數據的最佳做法是什麼?謝謝! JSON文件的
例子:
[
{
"name": "test",
"lat": "42.01108",
"long": "93.679196"
},
{
"name": "test",
"lat": "42.01108",
"long": "93.679196"
}
]
請出示從服務器返回 – 2015-04-02 03:57:45
JSON字符串我加了一個,但我不知道這是多麼有用。我提供的代碼正確解析並返回這些數據。我只是不確定它是否是最優化/有效的方式,因爲我對Android開發比較陌生。只是尋找一些反饋! – leerob 2015-04-02 04:01:35
我相信Gson最好是在Json上操作,並且結合凌空的事情變得相當容易 – 2015-04-02 04:04:52