本文来自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() */ @Override public String toString() { return "HistoryBean [view=" + view + ", data=" +data+ ", memo=" + memo + "]"; }
注意:无论是变量还是方法名,都禁止出现关键字。
然后解析
@Override protected 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 stub List<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 stub Log.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)
根据需要,大家可以更进行相应的扩展,欢迎大家踊跃交流!