`
awaitdeng
  • 浏览: 216514 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

发现了google的gson,javabean与JSON转换

阅读更多
发现了google的gson,因为之前对于protocolbuf有一些了解,带着一些好奇心,我开始使用了gson。
经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
下面是一个简单的例子:

Java代码
01.1.public class Person {   

02.2.  

03.3.    private String name;   

04.4.    private int age;   

05.5.  

06.6.    /**  

07.7.     * @return the name  

08.8.     */  

09.9.    public String getName() {   

10.10.        return name;   

11.11.    }   

12.12.  

13.13.    /**  

14.14.     * @param name the name to set  

15.15.     */  

16.16.    public void setName(String name) {   

17.17.        this.name = name;   

18.18.    }   

19.19.  

20.20.    /**  

21.21.     * @return the age  

22.22.     */  

23.23.    public int getAge() {   

24.24.        return age;   

25.25.    }   

26.26.  

27.27.    /**  

28.28.     * @param age the age to set  

29.29.     */  

30.30.    public void setAge(int age) {   

31.31.        this.age = age;   

32.32.    }   

33.33.       

34.34.    @Override  

35.35.    public String toString()   

36.36.    {   

37.37.        return name + ":" +age;   

38.38.    }   

39.39.}  

40.public class Person {

41.

42.    private String name;

43.    private int age;

44.

45.    /**

46.     * @return the name

47.     */

48.    public String getName() {

49.        return name;

50.    }

51.

52.    /**

53.     * @param name the name to set

54.     */

55.    public void setName(String name) {

56.        this.name = name;

57.    }

58.

59.    /**

60.     * @return the age

61.     */

62.    public int getAge() {

63.        return age;

64.    }

65.

66.    /**

67.     * @param age the age to set

68.     */

69.    public void setAge(int age) {

70.        this.age = age;

71.    }

72.    

73.    @Override

74.    public String toString()

75.    {

76.        return name + ":" +age;

77.    }

78.}
复制代码实体很简单,两个字段,当然实体中的字段也可以是List或者Set类型的。

Java代码
01.1.Gson gson = new Gson();   

02.2.List<Person> persons = new ArrayList<Person>();   

03.3.for (int i = 0; i < 10; i++) {   

04.4.     Person p = new Person();   

05.5.     p.setName("name" + i);   

06.6.     p.setAge(i * 5);   

07.7.     persons.add(p);   

08.8.}   

09.9.String str = gson.toJson(persons);  

10.Gson gson = new Gson();

11.List<Person> persons = new ArrayList<Person>();

12.for (int i = 0; i < 10; i++) {

13.     Person p = new Person();

14.     p.setName("name" + i);

15.     p.setAge(i * 5);

16.     persons.add(p);

17.}

18.String str = gson.toJson(persons);
复制代码上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的str对象值为:
01.[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}] 
复制代码很标准的json数据,很简单吧,呵呵。 
下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。 
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。 
先来看第一种: 
比如json字符串为:
01.[{"name":"name0","age":0}] 
复制代码代码: 

Java代码
01.1.Person person = gson.fromJson(str, Person.class);  

02.Person person = gson.fromJson(str, Person.class);
复制代码提供两个参数,分别是json字符串以及需要转换对象的类型。 
第二种,转换成列表类型: 
代码: 

Java代码
01.1.List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());   

02.2.for(int i = 0; i < ps.size() ; i++)   

03.3.{   

04.4.     Person p = ps.get(i);   

05.5.     System.out.println(p.toString());   

06.6.}  

07.List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

08.for(int i = 0; i < ps.size() ; i++)

09.{

10.     Person p = ps.get(i);

11.     System.out.println(p.toString());

12.}
复制代码可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
Gson的基本使用就是这么多,至于annotation方面可以参考gson的官方文档,希望能对初学java和gson的同学有所帮助。
分享到:
评论
3 楼 wzwahl36 2015-10-07  
Json在线转Javabean工具 http://www.atool.org/json2javabean.php
2 楼 wzwahl36 2015-10-07  
Json在线转Javabean工具 http://www.atool.org/json2javabean.php
1 楼 gary052402 2014-05-14  
谢谢,帮到我了!

相关推荐

    javabean和json转换_javabean2json_

    Gson的`fromJson()`方法接收一个JSON字符串和目标类的Class对象,然后将JSON转换为对应的JavaBean实例。 除了Gson之外,其他的库如Jackson和Fastjson也有类似的API,但使用方法略有不同。例如,使用Jackson,我们...

    JavaBean与JsonString的相互转换

    本篇将深入探讨JavaBean与JsonString之间的相互转换方法。 1. **什么是JavaBean** JavaBean是一种遵循特定规则的Java类,它主要用于封装数据,便于数据的存储和传递。JavaBean通常具有以下特点: - 是公共类...

    javaBean to json java对象转换json jar

    在本案例中,`myJson.jar`很可能包含了实现JavaBean到JSON转换的类和相关依赖。 总结来说,`javaBean to json java对象转换 jar`这个主题涉及到Java对象的序列化、JSON数据格式以及Java的归档文件系统。通过使用...

    JSON入门Java篇-5-用JavaBean来构建JSON.rar

    2. 错误处理:在进行JSON转换时,应妥善处理可能抛出的异常。 3. 性能优化:根据应用需求选择适合的库,如大量数据转换时考虑使用性能更优的库。 总结,通过JavaBean构建JSON是Java开发中常见的数据处理方式,Gson...

    json转换JavaBean

    总结,Java中将JSON转换为JavaBean主要有手动解析、使用Gson、Jackson、Fastjson等库以及自定义工具类等多种方式。选择哪种方式取决于项目需求、性能要求以及团队的熟悉程度。在实际开发中,应根据具体情况选择最...

    xml与json、javabean的互相转换

    同样,使用Jackson库,我们可以使用`JsonNode`对象的`toPrettyString()`方法将JSON转换为XML: ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; ...

    gson-2.2.4.jar;jsonlib

    Gson是由Google开发的Java库,它能将任何Java对象转换为对应的JSON字符串,同时也能将JSON内容反序列化回等效的Java对象。这个库非常强大且易于使用,使得在Java应用中处理JSON变得简单。 1. **序列化**: 使用`Gson...

    首字母大写的json串转为javabean实例

    1. **Gson库**:Google提供的Gson库是一个强大的工具,可以将JSON字符串直接转换为Java对象,反之亦然。然而,Gson默认并不处理属性名的大小写转换。我们可以自定义序列化和反序列化的过程,例如创建一个`...

    gson,fastJson,json-lib测试与实例

    项目中的`JsonConverterDemo`很可能是实现了一个简单的Java应用程序,演示了如何在这三个库之间进行JSON转换的比较和测试。在实际应用中,开发者会根据性能需求、项目依赖以及代码简洁性等因素来选择合适的库。例如...

    Android解析——json解析为javabean

    通过创建与JSON结构匹配的JavaBean类,并利用Gson的fromJson方法,我们可以轻松地将JSON数据转化为可操作的对象。同时,结合现代Android网络库,如Retrofit,可以进一步简化网络请求和数据解析的过程。

    google-gson-2.1-release

    2. **Java对象到JSON转换**:反之,Gson也可以将Java对象转换成JSON格式的字符串,方便在网络间传输或存储。 3. **自定义序列化和反序列化**:开发者可以通过注解或实现`JsonSerializer`和`JsonDeserializer`接口...

    json、javaBean、xml互转的几种工具介绍

    XStream还支持JSON转换,但默认不是启用的,需要额外配置。 5. **Apache Commons BeanUtils** Apache Commons BeanUtils是Apache软件基金会的一个项目,提供了一套方便的JavaBean操作工具。虽然它主要用于Bean...

    json自动生成javabean的工具jar

    针对这个需求,有一些工具可以自动将JSON转换为对应的JavaBean类,大大提高了开发效率。 标题中的“json自动生成javabean的工具jar”是指一个Java的库或者工具,它以JAR(Java Archive)文件形式提供,功能是将JSON...

    Gson工具类

    ### Gson工具类:实现JSON与Java对象的相互转换 Gson是Google提供的一个用于将Java对象转换为JSON字符串,以及将JSON字符串转换回Java对象的强大库。本文将深入解析Gson的基本用法,并通过示例代码来理解如何自定义...

    fastjson + gson + jsonlib + jacksonjar包

    Json-lib还支持将JavaBean、Map、Collection和数组转换为JSON格式,以及将JSON转换回这些对象。 4. Jackson: Jackson是另一个流行的Java JSON库,由 FasterXML 维护。Jackson 提供了多种方式来处理JSON,包括流式...

    gson-2.2.4.jar

    - **运行时类型信息**:Gson可以处理运行时的类型信息,允许将JSON转换为未知类型。 - **流式API**:当处理大量JSON数据时,可以使用Gson的流式API以减少内存消耗。 在实际项目中,我们通常会将Gson-2.2.4.jar添加...

    gson 字符串,java bean 对象转化,jar和源码.zip

    在Java编程中,Gson库是一个非常实用的工具,它由Google开发,主要用于在Java对象和JSON数据之间进行互相转换。Gson库的核心功能在于它能够将Java对象序列化为JSON字符串,同时也能将JSON字符串反序列化为相应的Java...

    gson2.8.5和eclipse插件javabean自动生成

    Gson库是由Google提供的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。标题提到的"Gson2.8.5"是Gson的最新版本,它为开发者提供了高效且灵活的方式来处理JSON数据。 Gson2.8.5引入了许多改进和修复,...

    详谈JSON与Javabean转换的几种形式

    同时,通过Gson库的使用,演示了如何实现Javabean与JSON之间的直接转换。这些操作在实际开发中十分常见,尤其是在处理RESTful API数据交换的场景中。 需要注意的是,在使用这些转换工具进行转换时,应保证JSON数据...

Global site tag (gtag.js) - Google Analytics