您的位置:首页 > Web前端 > JavaScript

fastJson解析

2015-11-25 12:44 489 查看
Json是一种轻量级的数据交换格式,采用完全独立于语言的文本格式.易于阅读和编写,同时也易于机器解析和生成.支持多种语言包括C, C++, C#, Java, JavaScript, Perl, Python等).

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: