开发者社区> TravelGrid> 正文

Android中级之网络数据解析一之Json解析

简介: 本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 在网络传输的时候,经常用到的解析方式有xml和json两种,今天我们主要来说下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()
	 */
	@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)


根据需要,大家可以更进行相应的扩展,欢迎大家踊跃交流!





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JSON无法解析,json前有小红点,如何解析json串你可能遇到了UTF-8 BOM头
JSON无法解析,json前有小红点,如何解析json串你可能遇到了UTF-8 BOM头
16 0
ajax请求json和xml数据及对json和xml格式数据的解析
ajax请求json和xml数据及对json和xml格式数据的解析
27 0
Golang JSON的编码和解析
Golang JSON的编码和解析
11 0
Gson与Fastjson两种Json解析神器保姆级使用攻略
Gson与Fastjson两种Json解析神器保姆级使用攻略
45 0
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据 by 页一
448 0
解析json文本
解析json文本
34 0
【未完美解决】json解析在react componentDidMount请求的数据所导致的问题
json解析在react componentDidMount请求的数据所导致的问题
36 0
Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
Android网络与数据存储——网络编程数据处理(网络请求解析Json,解析xml)
46 0
c++json构建与解析组件 RapidJSON 没用过永远不会知道有多好用
c++json构建与解析组件 RapidJSON 没用过永远不会知道有多好用
64 0
JSON&Ajax(语法格式+解析json)
导读模块:发展史: 21世纪初,Douglas Crockford寻找一种简便的数据交换格式, 能够在服务器之间交换数据。当时通用的数据交换语言是XML, 但是Douglas Crockford觉得XML的生成和解析都太麻烦, 所以他提出了一种简化格式,也就是Json。
30 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
可预期数据中心网络
立即下载
可编程网络视角的网络创新研究
立即下载
思科软件定义访问:实现基于业务意图的园区网络
立即下载