Android的json解析方式(一)

来源:互联网 发布:java终止线程 编辑:程序博客网 时间:2024/06/06 13:08
在Android中,json解析十分普通,也有很多解析的方式。

JSONObject和Gson是最常见的方法。


本文采用的json串(关于车辆违章信息):

{     "ret": "0",     "ret_msg": "",     "violation_info": [{          "temp_id": 1975175,          "violation_road": "学海路(312国道至仙林大道路段)",          "violation_sn": 3201139057889278,          "violation_time": 20131224144200     },     {          "temp_id": 1975178,          "violation_road": "宁小线(122省道)",          "violation_sn": 3211837900461076,          "violation_time": 20130613180500     }]}

采用JSONObject 方式:  
程序:
private void jsonInit(String str){           Mode mode = new Mode();            try {                JSONObject jsonObject = new JSONObject(str);                String ret = jsonObject.optString( "ret");                String ret_msg = jsonObject.optString("ret_msg" );                JSONArray jsonArray = jsonObject.optJSONArray("violation_info" );                                 for( int i = 0; i < jsonArray.length(); i++){                     String temp_id = jsonArray.getJSONObject(i).optString("temp_id" );                     String violation_road = jsonArray.getJSONObject(i).optString("violation_road" );                     String violation_sn = jsonArray.getJSONObject(i).optString("violation_sn" );                     String violation_time = jsonArray.getJSONObject(i).optString("violation_time" );                }                                           } catch (Exception e) {                 // TODO Auto-generated catch block                e.printStackTrace();                }     }


可以看到解析的很繁琐,如果违章信息很多的话,每个信息都要去取,实在很麻烦。

采用Gson方式解析(必须建Mode,引入google Gson库):

需要定义的Mode类:

public class Mode {private String ret;private String ret_msg;private List<violation_info> violation_info;//这个"violation_info"特别容易出错,一定要和json串里面的一样才行public String getRet() {return ret;}public void setRet(String ret) {this.ret = ret;}public String getRet_msg() {return ret_msg;}public void setRet_msg(String ret_msg) {this.ret_msg = ret_msg;}public List<violation_info> getVio_List() {return violation_info;}public void setVio_List(List<violation_info> vio_List) {this.violation_info = vio_List;}}class violation_info {String temp_id;String violation_road;String violation_sn;String violation_time;public String getTemp_id() {return temp_id;}public void setTemp_id(String temp_id) {this.temp_id = temp_id;}public String getViolation_road() {return violation_road;}public void setViolation_road(String violation_road) {this.violation_road = violation_road;}public String getViolation_sn() {return violation_sn;}public void setViolation_sn(String violation_sn) {this.violation_sn = violation_sn;}public String getViolation_time() {return violation_time;}public void setViolation_time(String violation_time) {this.violation_time = violation_time;}}

程序:
private void gsonInit(String str){                Gson gson = new Gson();     Mode mode = gson.fromJson(str, Mode.class);}

Gson也可以逆解析,将数据转换成json格式,采用了toJson方法。

private void gsonInit(String str){                      Gson gson = new Gson();           Mode mode = gson.fromJson(str, Mode. class);                       // 逆解析           String jsonStr = gson.toJson(mode);           Log. e("jsonStr" , jsonStr);           System. out.println(jsonStr);     }


0 0
原创粉丝点击