Android开发之JSON使用

Android开发之JSON使用

今天在论坛看到有不少朋友问关于json的问题,所以想写一篇关于android中使用json的博客。

首先

json是什么
JSON的全称是JavaScript Object Notation,从这里可以看到它源于JavaScript,它采用文本形式体现。比如
{"name":"zhangsan","age":20,"wife":"如花"}
这个简单表示了一个对象,在java中,类是这样的
public class Person{
    String name;
    int age;
    String wife;
    getter...
    setter...
}
json的组成

 1. 采用键值对方式组成基本元素,其中key是属性,value是对应的属性值
 2. {}用来保存对象
 3. []用来保存数组
 4. 用,分割元素
 5. json中数据类型没有严格的划分,所以在使用的过程中注意这点
所以,常见的json文本中存在对象({})和数组([]),只要掌握了长些基本要素,学会了如何将json文本准确的转化成class,那么json对你来说你就掌握了。

对于新手而言,常常会对json的内容理解不到位,或者没有对json文本进行校验就去解析。这里提供一款在线的json校验工具:bejson


Android json解析库

这里,我只推荐fastjson这个库。这个库是alibaba开源的,原本用于javaee中,后来进过简化,对于android支持也很好。
源码地址:https://github.com/alibaba/fastjson
在branches中可以看到不同版本的for android的源码,一般使用最新稳定版本即可。

下面,如何使用fastjson,核心类com.alibaba.fastjson.JSON

1. 将对象转化为json字符串

JSON.toJSONString(Object obj);

2 .将json字符串转化为对象

 JSON.parse();
 JSON.parseObject(String text, Class<T> clazz);
 等还有很多方法,下面我具体说一下通过泛型转化指定的类对象。

json示例

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}
对于以上的json传,我们可以看到最外层是一个对象,这个对象包含两个键值对,name和province。其中name是属性值为String型,province是一个对象数组,那么对应的java类如下

public class Citys{
    String name;
    List<Province> province;
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setProvince(List<Province> province){
        this.province = province;
    }
    public List<Province> getProvince(){
        return province;
    }
    //这是一个内部类,必须要用static class,负责内部类无法通过反射
    public static class Province{
        String name;
        List<String> cities;
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return name;
        }
        public void setCities(List<String> cities){
            this.cities = cities;
        }
        public List<String> getCities(){
            return cities;
        }
    }
}

上面是通过一个类搞定,内部类使用的时候需要static class修饰。
当然也可以拆分为两个类,我这里就不说了。
所有属性必须要有getter和setter。

使用是不是很简单呢。

一般我拿到json传的处理方式是,通过json格式化之后,就可以迅速写出json对应的class。
格式化工具推荐:chrome浏览器插件fehelper,还有就是上面所说的bejson

最后

json使用的地方越来越多,对于常用的json数据转化也是最基本的要求。
这个只要根据上面所提到的,认真分解json数据格式,没有任何难点。
如果对于json有任何问题的,欢迎咨询。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值