fastJson解析
2015-11-25 12:44
489 查看
Json是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.易于阅读和编写,同时也易于机器解析和生成.支持多种语言包括C, C++, C#, Java, JavaScript, Perl, Python等).
一个对象以“{”(左括号)开始,“}”(右括号)结束 每个“名称”后跟一个“:”(冒号) “‘名称/值’对”之间使用“,”(逗号)分隔。
规则如下:
1) 映射用冒号(“:”)表示。名称:值
2) 并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值,名称2:值2}
4) 并列数据的集合(数组)用方括号(“[]”)表示。
[
{名称1:值,名称2:值2},
{名称1:值,名称2:值2}
]
5)元素值可具有的类型:string, number, object, array, true, false, null
用fastJson解析一个json对象
注意:json导的包是alibaba的,可在网上下载fastjson…jar包,然后放在工程libs文件夹里,然后导入
把流转成字符串
查看工程里assets文件夹里的文件
JSON书写格式
JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束 每个“名称”后跟一个“:”(冒号) “‘名称/值’对”之间使用“,”(逗号)分隔。
规则如下:
1) 映射用冒号(“:”)表示。名称:值
2) 并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值,名称2:值2}
4) 并列数据的集合(数组)用方括号(“[]”)表示。
[
{名称1:值,名称2:值2},
{名称1:值,名称2:值2}
]
5)元素值可具有的类型:string, number, object, array, true, false, null
例1、{ "name": "Obama"} 例2、{ "name": "Romney","age": 56} 例3、{ "city":{"name": "bj"},"weatherinfo":{"weather": "sunny"}} 例4、{"city":{"name": "北京","city_id":"101010100"},"weatherinfo":{"weather":"sunny","temp":"29度"} 例5、[ { "name": "张三", "age":22, "email": "zhangsan@qq.com" }, { "name": "李四", "age":23, "email": "lisi@qq.com"}, { "name": "王五", "age":24, "email": "wangwu@qq.com" } ] 例6、 { "student": [ { "name": "张三", "age":22, "email": "zhangsan@qq.com" }, { "name": "李四", "age":23, "email": "lisi@qq.com"}, { "name": "王五", "age":24, "email": "wangwu@qq.com" } ] }
fastjson简介:
Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。用fastJson解析一个json对象
注意:json导的包是alibaba的,可在网上下载fastjson…jar包,然后放在工程libs文件夹里,然后导入
import com.alibaba.fastjson.JSONObject;
public void fastJsonTest() throws IOException{ //从工程的assets文件夹得到一个文件的流,文件里有个json对象 InputStream is = getContext().getAssets().open("json_xx"); //读取这个流,转成字符串 String jsonStr = readInputStreamFromHttp(is); //每一个json对象都要创建一个对应的类,类里声明包含的对应参数,并创建set,get方法 JsonRoot jsonRoot = JSONObject.parseObject(jsonStr, JsonRoot.class); String resultCode = jsonRoot.getResultCode(); String resultInfo = jsonRoot.getResultInfo(); JsonInfo jsonInfo = jsonRoot.getInfo(); ArrayList<JsonPicSetItem> jsonPicSetItem = jsonInfo.getPicSet(); for (int i = 0; i < jsonPicSetItem.size(); i++) { JsonPicSetItem picSetItem = jsonPicSetItem.get(i); String albumsName = picSetItem.getAlbumsName(); ArrayList<JsonPicUrlSetItem> picUrlSet = picSetItem.getPicUrlSet(); Log.v("tag", "albumsName = "+albumsName); for (int j = 0; j < picUrlSet.size(); j++) { JsonPicUrlSetItem picUrlItem = picUrlSet.get(j); String picUrl = picUrlItem.getPicUrl(); Log.v("tag", "picUrl = "+picUrl); } } Log.v("tag", "resultCode = "+resultCode+", resultInfo "+resultInfo); }
把流转成字符串
public String readInputStreamFromHttp(InputStream is) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8")); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line); } br.close(); is.close(); return sb.toString(); }
查看工程里assets文件夹里的文件
public void listAssetFile() throws IOException{ AssetManager assetManager = getContext().getAssets(); String[] list = assetManager.list(""); for(String file:list){ Log.v("tag","file :"+file); } }
相关文章推荐
- js插件的经典写法与总结
- 返回Json数据浏览器带上<pre></pre>标签解决方法
- js 连接地址分析
- javascript下ie7,ie8的Date Bug的解决
- JavaScript的this词法(二)
- javascript 基础教程[温故而知新一]
- WCF 自托管、无配置文件实现jsonp(跨域)的访问
- highChartsjs饼状图
- ExtJS中的全局变量的保存和使用
- DIV滚动条到底部判断且自动加载,到上限更多选项
- JSON
- javascript定义对象写法
- [javascript]DOM基础
- jsp内置对象作业2-留言簿
- JavaScript设置组件不可见三种方式:display、visibility、opacity
- js两种post方法
- 使用flot.js 发现x轴y轴无法显示轴名称
- JavaScript的作用域链的理解
- javascript图片预加载
- HTML5播放器 MediaElement.js 使用方法