发现了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的同学有所帮助。
分享到:
相关推荐
Gson的`fromJson()`方法接收一个JSON字符串和目标类的Class对象,然后将JSON转换为对应的JavaBean实例。 除了Gson之外,其他的库如Jackson和Fastjson也有类似的API,但使用方法略有不同。例如,使用Jackson,我们...
本篇将深入探讨JavaBean与JsonString之间的相互转换方法。 1. **什么是JavaBean** JavaBean是一种遵循特定规则的Java类,它主要用于封装数据,便于数据的存储和传递。JavaBean通常具有以下特点: - 是公共类...
在本案例中,`myJson.jar`很可能包含了实现JavaBean到JSON转换的类和相关依赖。 总结来说,`javaBean to json java对象转换 jar`这个主题涉及到Java对象的序列化、JSON数据格式以及Java的归档文件系统。通过使用...
2. 错误处理:在进行JSON转换时,应妥善处理可能抛出的异常。 3. 性能优化:根据应用需求选择适合的库,如大量数据转换时考虑使用性能更优的库。 总结,通过JavaBean构建JSON是Java开发中常见的数据处理方式,Gson...
总结,Java中将JSON转换为JavaBean主要有手动解析、使用Gson、Jackson、Fastjson等库以及自定义工具类等多种方式。选择哪种方式取决于项目需求、性能要求以及团队的熟悉程度。在实际开发中,应根据具体情况选择最...
同样,使用Jackson库,我们可以使用`JsonNode`对象的`toPrettyString()`方法将JSON转换为XML: ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; ...
Gson是由Google开发的Java库,它能将任何Java对象转换为对应的JSON字符串,同时也能将JSON内容反序列化回等效的Java对象。这个库非常强大且易于使用,使得在Java应用中处理JSON变得简单。 1. **序列化**: 使用`Gson...
1. **Gson库**:Google提供的Gson库是一个强大的工具,可以将JSON字符串直接转换为Java对象,反之亦然。然而,Gson默认并不处理属性名的大小写转换。我们可以自定义序列化和反序列化的过程,例如创建一个`...
项目中的`JsonConverterDemo`很可能是实现了一个简单的Java应用程序,演示了如何在这三个库之间进行JSON转换的比较和测试。在实际应用中,开发者会根据性能需求、项目依赖以及代码简洁性等因素来选择合适的库。例如...
通过创建与JSON结构匹配的JavaBean类,并利用Gson的fromJson方法,我们可以轻松地将JSON数据转化为可操作的对象。同时,结合现代Android网络库,如Retrofit,可以进一步简化网络请求和数据解析的过程。
2. **Java对象到JSON转换**:反之,Gson也可以将Java对象转换成JSON格式的字符串,方便在网络间传输或存储。 3. **自定义序列化和反序列化**:开发者可以通过注解或实现`JsonSerializer`和`JsonDeserializer`接口...
XStream还支持JSON转换,但默认不是启用的,需要额外配置。 5. **Apache Commons BeanUtils** Apache Commons BeanUtils是Apache软件基金会的一个项目,提供了一套方便的JavaBean操作工具。虽然它主要用于Bean...
针对这个需求,有一些工具可以自动将JSON转换为对应的JavaBean类,大大提高了开发效率。 标题中的“json自动生成javabean的工具jar”是指一个Java的库或者工具,它以JAR(Java Archive)文件形式提供,功能是将JSON...
### Gson工具类:实现JSON与Java对象的相互转换 Gson是Google提供的一个用于将Java对象转换为JSON字符串,以及将JSON字符串转换回Java对象的强大库。本文将深入解析Gson的基本用法,并通过示例代码来理解如何自定义...
Json-lib还支持将JavaBean、Map、Collection和数组转换为JSON格式,以及将JSON转换回这些对象。 4. Jackson: Jackson是另一个流行的Java JSON库,由 FasterXML 维护。Jackson 提供了多种方式来处理JSON,包括流式...
- **运行时类型信息**:Gson可以处理运行时的类型信息,允许将JSON转换为未知类型。 - **流式API**:当处理大量JSON数据时,可以使用Gson的流式API以减少内存消耗。 在实际项目中,我们通常会将Gson-2.2.4.jar添加...
在Java编程中,Gson库是一个非常实用的工具,它由Google开发,主要用于在Java对象和JSON数据之间进行互相转换。Gson库的核心功能在于它能够将Java对象序列化为JSON字符串,同时也能将JSON字符串反序列化为相应的Java...
Gson库是由Google提供的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。标题提到的"Gson2.8.5"是Gson的最新版本,它为开发者提供了高效且灵活的方式来处理JSON数据。 Gson2.8.5引入了许多改进和修复,...
同时,通过Gson库的使用,演示了如何实现Javabean与JSON之间的直接转换。这些操作在实际开发中十分常见,尤其是在处理RESTful API数据交换的场景中。 需要注意的是,在使用这些转换工具进行转换时,应保证JSON数据...