GSON学习笔记之初识GSON

引用“JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,採用全然独立于语言的文本格式。为Web应用开发提供了一种理想的数据交换格式。 ”

曾经手机端与server数据交互的时候用过xml格式,后来又用了JSON格式,无论是server生成json数据,还是手机端解析json数据,尽管用到一些json库,但都比較繁琐。近期从一些项目中发现了Google的gson,就開始学习使用。经过比較,发现gson与其它json库最大的不同是。gson直接使用序列化的实体类来生成json数据,而且使用相应实体进行解析。

在GSON的API中。提供了两个重要的方法:toJson()和fromJson()方法。

当中。toJson()方法用来实现将Java对象转换为对应的JSON数据。fromJson()方法则用来实现将JSON数据转换为对应的Java对象。

以下是一个简单样例:

//Person实体

public class Person {

    private String name;
    private int 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 + ":" +age;
    }
}

然后直接使用Gson对象的toJson()方法生成json数据

//生成Json字符串

Gson gson = new Gson();
List<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
     Person p = new Person();
     p.setName("name" + i);
     p.setAge(i * 5);
     persons.add(p);
}
String str = gson.toJson(persons);

上面的代码重点是Gson对象。它提供了toJason()方法将对象转换成Json字符串。上面代码的str对象值为:

[{"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}]

然后我们使用Gson提供的fromJson() 方法。将json数据解析成相相应的Java实体。

(1)单一对象数据的情况:[{"name":"name0","age":20}]

使用:

Person person = gson.fromJson(str, Person.class);

(2)列表实体类型,就像上面我们生成的那样。

使用:

List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
for(int i = 0; i < ps.size() ; i++)
{
     Person p = ps.get(i);
     System.out.println(p.toString());
}

gson-2.2.2.jar下载

时间: 2024-11-08 21:30:26

GSON学习笔记之初识GSON的相关文章

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

NuGet学习笔记(1)——初识NuGet及快速安装使用

转自:http://kb.cnblogs.com/page/143190/ 关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的

[转]NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站

NuGet学习笔记(1) 初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站

学习笔记ListView初识

1.ListView的基本使用 作用:android系统中显示列表的控件 2.两种适配器(ArrayAdapter.simpleAdapter) 数据适配器 是连接数据源和视图界面的桥梁作用:把复杂的数据(数组.链表.数据库.集合等)填充到指定视图界面上 ArrayAdapter:用于绑定格式单一数据数据源:集合或者数组SimpleAdapter:用于绑定格式复杂的数据数据源:只能是特定泛型的集合实现过程:新建适配器->添加数据源到适配器->视图加载适配器 使用ArrayAdapter: pa

NuGet学习笔记1——初识NuGet及快速安装使用

关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站

WebAPi学习笔记之一 初识WebApi

公司这几天接了个APP项目,项目中要使用WebApi来作为服务端和客户端的数据交换层.于是我就被老板要求学习WebApi了. 对于ASP.Net相关知识为零的我来说,这无疑是一个难题.学习了这么久终于摸到了点门路.WebApi的定位很容易,它就是用来控制服务端和数据段数据转换的. WebApi包括控制器,路由,类model等几大内容: 类model:主要用来保存数据的. 控制器:主要用来根据客户端的method类型的响应, 路由:根据客户端的request URL来选择使用哪一个控制器,或者生成

java学习笔记之初识多线程

初识多线程 一.进程的认识: 1.进程的理解: 进程可以理解成正在执行的任务,就是正在运行的程序,进程又分为两种,一种是前台进程,就是我们很直观看见的,另一种是后台进程,就是操作系统启动就有的(系统级的进程),每个进程运行之后都会占用一定的cpu和内存资源: 比如说:我们打开window任务管理器就可以看到有很多的进程,里面有用户开启的,也有操作系统启动的进程 2.进程的调度: 也就是那么多的进程,cpu是怎样运行的呢? 采用时间片轮转法 二.线程认识 1.线程的理解 线程是在进程的内部运行的执

linux学习笔记-目录初识

/  根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件 /dev 存放设备文件 /etc 存放系统配置文件 /home 普通用户的宿主目录和用户数据村存放的目录 /lib 存放必要的运行库 /mnt 存放临时的映射文件系统,通常用来挂载. /proc 存放进程和系统信息 /root 超级用户的主目录 /sbin 存放系统管理程序 /tmp 存放临时文件 /usr 存放应用程序.命令程序文件.程序库.手册和其他文档. /var 系统默认日志存放目录