巨大八爪鱼
武林盟主 二十一級
|
XML空節點:<string /> 會被php的json_encode轉換為string:{} XML帶文本節點的標籤:<string>something</string> 會被php的json_encode轉換為string:"something" 所以在讀取時需要在java中判斷
public static String getJSONString(JSONObject obj, String keyName) { try { obj.getJSONObject(keyName); // If succeeded, it is KEYNAME:{} and should actually be an empty string return ""; } catch (JSONException e) { // If failed, it is a nonempty string (KEYNAME:"XXX") try { String keyString = obj.getString(keyName); return keyString; } catch (JSONException e1) { // If failed again, it is of other data types. return ""; } } }
|
巨大八爪鱼
武林盟主 二十一級
|
使用案例(把該函數放到App靜態類中) try { JSONObject result = new JSONObject(network.result); JSONArray bars = result.getJSONArray("bar"); barList.clear(); barIDs.clear(); for (int i = 0; i < bars.length(); i++) { JSONObject bar = bars.getJSONObject(i); String details = String.format(App.res.getString(R.string.bar_details), bar.getString("creator")); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("PostTitle", bar.getString("name")); map.put("PostContent", App.getJSONString(bar,"shortDescription")); map.put("PostDetails", details); barList.add(map); barIDs.add(bar.getInt("ID")); } adapter.notifyDataSetChanged(); ((ListView)findViewById(R.id.listView1)).setSelection(0); displayed = true; } catch (JSONException e1) { App.alert("JSONException"); e1.printStackTrace(); }
|