json数据和bean之间的转换

关于json数据和bean之间的转换

 

在开发中, 我们的每个程序,都必不可少的使用到了json和bean数据。传输的时候,我们首选使用json来装载数据传输,但是在java中,我们更习惯于使用bean来对数据进行操作,这样更加方便和简单。所有这里就涉及到一个两个不同数据类型的转换。

googol给我们提供了一个转换的工具类--gson。用这个工具,我们可以很快的进行类型转换,下面是我模拟一个用户的user类和json的转换。

 

首先我们要建立一个bean实体类:

/**
 * Created by tanksu on 16/5/25.
 */
public class User implements Serializable {

    private String name;
    private int age;

    public User(String name, int age) {
        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 "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}

 

这是一个很简单的user类,只有两个属性:name 和 age。我们对此只做一个简单示例。

 

转换的具体操作如下,具体的代码讲解 ,都在注视里面了,可以认真查看:

 

public void test() {
        //一般情况下,我们从服务器返回来的数据是json数据,所以我们需要把它转换成bean对应的实体类
        //这里有一点要注意的是,我们进行一般的转换,需要json和bean的属性数量和属性类型和名称都要对应完全一致
        //否则可能会报错
        String resJson = "[{\"name\":\"jack\",\"age\":20}] ";
        Gson gson = new Gson();
        User user = gson.fromJson(resJson, User.class);//将json数据转换成user类实体
        System.out.println("-=-=-=->>user.toString = " + user.toString());
        //结果:User{name='jack',age=20} 可以取出单个数据:user.getName();user.getAge();

        User user1 = new User("rose", 32);
        String strUser1 = gson.toJson(user1);//将bean数据转换成json数据
        System.out.println("-=-=-=->>strUser1 = " + strUser1);
        //结果:[{"name":"rose","age":32}]

        //这里还有另外一种情况,我们注意到在name里面有一个@Expose修饰词,而age里面没有
        //因为这里考虑到这种情况:我们并不需要将所有的数据转换成json活着bean,只需要部分转换就够了
        //我们就需要用到这个属性,以及下面的代码
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.excludeFieldsWithoutExposeAnnotation();// 不转换没有 @Expose 注解的字段
        Gson gson1 = gsonBuilder.create();
        User user2 = gson1.fromJson(resJson, User.class);
        System.out.println("-=-=-=->>user2.toString() = " + user2.toString());
        //结果:User{name='jack',"age":0} ,可以看到这里的age没有被赋值,默认为0

        String strUser2 = gson1.toJson(user1);
        System.out.println("-=-=-=>>strUser2 = " + strUser2);
        //结果:[{"name":"rose"}],可以看到只转换了name属性
    }

 

这个转换,看起来并不难,但是在应用中大有用处。希望大家可以熟练掌握此技能。

如有任何疑问,请及时与我联系,谢谢。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值