本文来自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)
根据需要,大家可以更进行相应的扩展,欢迎大家踊跃交流!