用安卓自带的原生方法解析从webservice获取的json数据
研究了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的方法。 写到这里 就不写了 是不是很简单 希望给大家一个 抛砖引玉.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。