Android 解析JSON格式数据

之前在学习”如何解析:数据”的时候,在网上查了很多资料,在这里我总结一下几个常用的框架,一个是json-lib,另外一个是Gson。为了学习的方便,我的代码在java环境下运行,不在android环境下运行

(1)json-lib框架
先到网上去下载json-lib.jar,然后导入工程即可。
生成json数据,代码如下:

public void createJSON() {
        try {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("name", "吴长老");
            jsonObject.put("age", 21);
            System.out.println(jsonObject.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

运行结果:

为了学习的方便,我们直接来解析这个生成出来的json字符串
生成json数据,代码如下:

    public void parseJSON() {
        try {
            JSONObject jsonObject = new JSONObject("{\"age\":21,\"name\":\"吴长老\"}");
            String name = jsonObject.optString("name", "");
            String age = jsonObject.optString("age", "");
            String sex = jsonObject.optString("sex", "未知");
            System.out.println("name:" + name);
            System.out.println("age:" + age);
            System.out.println("sex:" + sex);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

运行结果:

很显然,我们解析的是对的。
值得注意的是,上面用到了optString(),为什么不用getString()?因为如果我们要获取的属性值不存在(比如sex属性),如果用getString就会抛异常,用optString则不会抛异常,因为我们已经指定了一个默认值。

(1)Gson框架
Gson是google推出的一款解析json数据的框架,它的特点是,可以直接将一个json字符串解析成java bean对象。什么叫java bean对象?就是我们定义的一个对象,里面只有属性和get、set方法,如果还不懂,就看代码演示吧。使用json框架之前需要下载gson.jar

首先,我们要定义个java bean对象,这里我们定义为Person.java,代码如下:
public class Person {

    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "name:" + name + "\nage:" + age;
    }
}

看到了吧,是不是很熟悉,这就是java bean,为了演示的方便,我还重写了它的toString方法,下面看我如何快速将一个person对象转化为json数据

生成json数据,代码如下:
    public void createJSON() {
        Person person = new Person();
        person.setName("吴长老");
        person.setAge(21);
        Gson gson = new Gson();
        System.out.println(gson.toJson(person));
    }

运行结果:

使用Gson解析json数据,代码如下:

    public void parseJSON() {
        Gson gson = new Gson();
        Person person = gson.fromJson("{\"age\":21,\"name\":\"吴长老\"}", Person.class);
        System.out.println(person.toString());
    }

运行结果:

成功解析!!!需要注意的是,将json数据转化为bean对象的时候,属性值必须要一一对应,不能多,也不能少,否则会报错的

好了,JSON数据的解析就学到这了,以后应该够用了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值