fastJson解析

本文介绍了JSON作为轻量级数据交换格式的特性,并详细解析了Fastjson的使用,包括其高速性能和全面的Java类型支持。通过示例展示了如何使用Fastjson进行JSON对象的解析操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
         }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值