注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

0与1构筑世界,程序员创造时代

软件架构设计 Java编程

 
 
 

日志

 
 

Gson教程-自定义反序列化 | Gson Tutorial - Custom Deserialization  

2015-08-17 20:21:12|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Gson教程-自定义反序列化 | Gson Tutorial - Custom Deserialization - 傲风 - 0与1构筑世界,程序员创造时代
一、需求
二、实现
    1、自定义反序列化
    2、注册自定义的反序列化
三、参考资料

上一篇文章《Gson教程-自定义序列化》介绍了使用Gson的自定义序列化满足一些业务场景下的需求。同样的,反序列化(JSON字符串转换成Java对象)也需要自定义,使用方式与序列化一样,两步搞定:

  1. 实现JsonDeserializer接口。
  2. 注册自定义的反序列化实现。

一、需求

1、有如下JSON字符串,需要转换成Person对象。

{"PersonName":"aofeng","PersonAge":32}

2、Person有两个属性:name和age,点击查看源代码

二、实现

1、自定义反序列化

实现JsonDeserializer接口的deserialize方法:

public static class PersonDeserializer implements JsonDeserializer<Person> {

    @Override
    public Person deserialize(JsonElement jsonEle, Type type,
            JsonDeserializationContext context)
            throws JsonParseException {
        JsonObject jo = jsonEle.getAsJsonObject();
        String name = jo.get("PersonName").getAsString();
        int age = jo.get("PersonAge").getAsInt();

        Person obj = new Person(name, age);
        return obj;
    }

}

2、注册自定义的反序列化

创建一个GsonBuilder,使用registerTypeAdapter方法注册自定义的序列化实现,然后生成Gson对象来进行序列化。

public static void main(String[] args) {
    GsonBuilder builder = new GsonBuilder();
    builder.registerTypeAdapter(Person.class, new PersonDeserializer());
    Gson gson = builder.create();

    String json = "{\"PersonName\":\"aofeng\",\"PersonAge\":32}";
    Person obj = gson.fromJson(json, Person.class);
    System.out.println(obj);
}

运行上述代码,输出信息如下:

Person [name=aofeng, age=32]

附:完整的源代码

三、参考资料

<正文结束>

文章声明


作者:傲风(aofengblog@163.com)       编写时间:2015年08月17日

网址:http://aofengblog.blog.163.com

作者保留所有权利,转载请保留文章全部内容或者说明原作者和转载地址!

  评论这张
 
阅读(1415)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017