標籤:
研究了oschina,擷取的資訊都是用xml的,感覺沒json那麼好,解析太複雜迴圈啥的,還有xml相對於json來說太多了,麻煩。
之前試過用geon還有fastjson但是老是報錯。還是用原生內建的json方法。這裡我來接受一組json資料
譬如我們想要擷取一堆人員資訊,
[ {"username":"馬暈","company":"albaba"}, {"username":"劉強西","company":"jingdong"}, {"username":"馬花疼","company":"qq"}, {"username":"李豔紅","company":"baidu"}]
上面這些是一組人員的資訊 有兩個欄位 名字和所在公司
這裡我們根據我們獲得的資料進行映射:產生一個人員類實體
public class User implements Serializable {private String username;private String company;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}}
到這裡 我們怎麼把上面的json組資料轉換成 一個人員組呢,我們這裡可以用到List<User> 來把獲得的json資料
那我們在做一個UserList的實體類 用來轉換json資料為了對象組
public class UserList implements Serializable {private List<User> userList= new ArrayList<User>();//資訊組的人員的總人數private int usersCount;public int getUsersCount() {return usersCount;}public List<User> getUserList() {return userList;} //解析json並轉化成對象組public static UserList parse(JSONArray obj) throws JSONException {UserList list = new UserList();if(null != obj){//擷取對象組長度作為總人數list.usersCount = obj.length();for(int i=0;i<obj.length();i++){JSONObject userJson = obj.getJSONObject(i);User user = new User();user.setUsername(userJson.getString("username"));user.setCompany(userJson.getString("company"));list.userList.add(user);}}return list;}}
上面的解析參數是一個json對象組,到這裡就可以很簡單了,
String usersString = "[ {"username":"馬暈","company":"albaba"}, {"username":"劉強西","company":"jingdong"}, {"username":"馬花疼","company":"qq"}, {"username":"李豔紅","company":"baidu"}]";
假如我們獲得的json資料是一個字串,一般都是字串,然後我們用java內建的方法進行轉換成JSONArray
/** * 字串轉JSON * * @param json * @return * @throws JSONException */public static JSONArray toJSONArray(String json) throws JSONException {return new JSONArray(json);}
我們還為此寫了一個把string轉換成JSONArray的方法。
寫到這裡 就不寫了 是不是很簡單 希望給大家一個 拋磚引玉.
用安卓內建的原生方法解析從webservice擷取的json資料