Android中级之网络数据解析一之Json解析
本文來自http://blog.csdn.net/liuxian13183/?,引用必須注明出處!
在網絡傳輸的時候,經常用到的解析方式有xml和json兩種,今天我們主要來說下json、解析,以及其要點。
首先json格式:
“[”標識json解析開始,"]"標識json解析結束
"{"標識json的一個數據開始,"}"標識一個數據結束
key:'value'標識所傳送的數據。key可以加引號,也可以不加;但value必須加引號,單引號或雙引號都可以
key/value之間要用","隔開
其他就沒什么了。
json包通常有gson,org-json等,下載路徑:http://www.json.org/
那我們是以alibaba的fastjson為例來做示范
下載位置:http://download.csdn.net/detail/liuxian13183/5492645
解析目標:
[{view:'水滸傳',data:{name:'宋江',age:'37'},data2:{name:"武松",age:"27"},memo:'英雄人物'},{view:'紅樓夢',data:{name:'賈寶玉',age:"17"},data2:{name:"林黛玉",age:"14",memo:'情感人物'}}]
命名文件json.txt,放在assets路徑下
注意:json數據要eclipse編輯,不要在windows環境下用txt編輯,否則會加入空格,造成不必要的影響
先上效果圖
作法1:先寫一bean
public class HistoryBean {private String view;private Map<String, Object> data;private String memo;/*** @return the view*/public String getView() {return view;}/*** @param view the view to set*/public void setView(String view) {this.view = view;}/*** @return the map*/public Map<String, Object> getData() {return data;}/*** @param map the map to set*/public void setData(Map<String, Object> data) {this.data = data;}/*** @return the memo*/public String getMemo() {return memo;}/*** @param memo the memo to set*/public void setMemo(String memo) {this.memo = memo;}/* (non-Javadoc)* @see java.lang.Object#toString()*/@Overridepublic String toString() {return "HistoryBean [view=" + view + ", data=" +data+ ", memo=" + memo+ "]";}
注意:無論是變量還是方法名,都禁止出現關鍵字。
然后解析
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView main_listivew = (ListView) findViewById(R.id.main_listivew);data = new ArrayList<String>();List<String> targetJsons = unParseTxt("json.txt");for (String targetJson : targetJsons) {pase2(targetJson);}adapter = new MyAdapter();main_listivew.setAdapter(adapter);}private List<String> unParseTxt(String string) {// TODO Auto-generated method stubList<String> target = new ArrayList<String>();try {BufferedReader br = new BufferedReader(new InputStreamReader(getAssets().open(string)));String str;while ((str = br.readLine()) != null) {if (!TextUtils.isEmpty(str)) {target.add(str);}}} catch (Exception e) {}return target;}private void pase2(String targetJson) {// TODO Auto-generated method stubLog.i("AlipayTag", targetJson);List<HistoryBean> list = JSON.parseArray(targetJson, HistoryBean.class);for (HistoryBean bean : list) {data.add(bean.toString());}}
注解:
Json解析可使用JSON,JSONObject,JSONArray來調用
方法有:
解析成一對象,可以是bean,JSON.parse(text);
解析成byte數組,JSON.toJSONBytes(arg0, arg1)
解析成泛型,JSON.parseObject(input, clazz, features)
根據需要,大家可以更進行相應的擴展,歡迎大家踴躍交流!
轉載于:https://www.cnblogs.com/fengju/archive/2013/05/31/6174459.html
總結
以上是生活随笔為你收集整理的Android中级之网络数据解析一之Json解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql防注入
- 下一篇: Android 开发笔记 一