Android应用开发之(Gson的使用)

把Gson作为我们的JSON解析库,如何应用到我们的程序中呢?之需要引入Gson的jar包即可:

下载地址:http://code.google.com/p/google-gson/

Code Docs:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

使用方法:

一、对象-->JSON

   假如我们有一个类Person:

public class Person {

    public long id;

    public String name;

    public boolean isMale;

    public String avatar;

}

   通过一个Gson实例:

Gson gson = new Gson();

   我们可以直接将一个Person实例转换成Json字符串:

Person person = new Person();

person.id= 111;

person.name= "张三";

person.isMale= true;

person.avatar= "http://aaaaaaaaa";

 

String jsonStr = gson.toJson(person);

Log.v("=============", jsonStr);

   即使是List和Map也可以(以List为例):

ArrayList<Person> list = new ArrayList<Person>();

 

Person person = new Person();

person.id= 111;

person.name= "张三";

person.isMale= true;

person.avatar= "http://aaaaaaaaa";

list.add(person);

person = new Person();
ArrayList<Person> list = new ArrayList<Person>();

person.id= 222;

person.name= "李四";

person.isMale= false;

person.avatar= "http://bbbbbbbbb";

list.add(person);

 

String jsonStr = gson.toJson(list);

Log.v("=============", list);

二、JSON-->对象

   反过来如何解序列化呢(也就是解析JSON)?

   还是先以Person对象为例:

private final String JSON_STR = "{\"avatar\":\"http://aaaaaaaaa\",\"name\":\"博张三\",\"id\":111,\"isMale\":true}";

 

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

  没错,就是如此简单,如果是List或者Map也同样简单(同样以List为例):

private final String JSON_STR= "[{\"avatar\":\"http://aaaaaaaaa\",\"name\":\"张三\",\"id\":111,\"isMale\":true},{\"avatar\":\"http://bbbbbbbbb\",\"name\":\"李四\",\"id\":222,\"isMale\":false}]";

Type listType = newTypeToken<List<Person>>(){}.getType();

list = gson.fromJson(JSON_STR, listType);

 

恩,使用起来确实比拿到JSONObject然后一层一层、一个一个去get要方便很多,不过我也是刚刚接触,正在摸索学习中,如果大家遇到问题也可以提出来一块研究。

时间: 2024-09-14 05:40:57

Android应用开发之(Gson的使用)的相关文章

Android程序开发ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱)_Android

例子中用于解析Json的Gson请自己Google下载 主Activity: package COM.Example.Main; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import COM.Example.Main.R; import COM.Example.Main.stringG

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的好用,今天我们为了博客的保质保量,也就不分开写,我们直接拿比较火的Gson和Fast-json来使用,末尾在进行一些分析 Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 一.各有千秋 两大解析库的东家都是巨头,一个来自于Google官方,一个来自阿里巴巴,我们这

背景设置-android桌面开发如何设置系统内置动态壁纸

问题描述 android桌面开发如何设置系统内置动态壁纸 急!!! 我自己编写了一个android桌面,添加壁纸设置功能,调用系统壁纸选择器后,设置系统动态壁纸无效果,发现桌面背景还是没变化,但是设置静态的图片又可以,求大神大师们解答? 是与布局空间的属性有关还是与AndroidManifest.xml中activity属性参数有关?

Android studio 开发,谷歌 API Key 如何 申请?

问题描述 Android studio 开发,谷歌 API Key 如何 申请? 在用Android studio开发过程中, 需要用到谷歌地图,请问怎么申请谷歌 API Key 了?帮帮忙!!! 解决方案 申请Google Map Android API Key申请 ANDROID GOOGLE MAP API KEY 解决方案二: 建议用BaiduMap等墙内的地图 解决方案三: 建议用高德地图,坐标跟google的算法是一个.

android网络应用开发详解

Android网络应用开发,主要有两种方式,一种是socket(是对tcp/udp协议的封装),另外一种就是使用Http协议,Android中主要提供了两种方式,HttpURLConnection和Apache HttpClient.下面对Android网络应用开发进行具体的阐述. 一.基于socket的网络通信 socket是为了网络服务提供的一种机制.通信的两端都是socket. 网络通信其实就是socket间的通信. 数据在两个socket间进行io传输. 1.基于udp的socket编程

Android简明开发教程二十四:总结及示例代码下载

Android 简明开发教程使用了引路蜂二维图形库作为例子,引路蜂二维图形库是引路蜂地图开发包 (http://www.imobilebbs.com/wordpress/?page_id=6)一部分,引路蜂地图开发包提供了对几乎所有软件平台(桌面和移动平台 )的支持,采用统一的接口使用包括Google 地图,Bing地图,MapABC地图在内多达二十多种地图类型,并在同一开发包中支持离 线地图,矢量地图显示. 引路蜂地图开发包Android平台示例可以参见:http://www.imobileb

Android简明开发教程二十三:发布应用

到这里基本介绍了Android开发的一些基本知识,在开发实际应用时最常用的几个参考是: The Developer's Guide Android References Android Resources 最后一个是Google.com :-) 写好应用后,在设备上测试后,最后一步是发布你的应用.和Java ME平台类似的, Android应用也需要进行数字签名后才能发布.但和Java ME不同的,Android用来签名的数字证书并不需要经过CA认证,这可以 每年省下$400-$500的费用,i

Android简明开发教程二十一:访问Internet 绘制在线地图

在例子Android简明开发教程十七:Dialog 显示图像 中我们留了一个例子DrawMap()没有实现,这个例子显示在线地图,目前大部分地图服务器都是将地图以图片存储以提高响应速 度. 一般大小为256X256个像素.具体可以参见离线地图下载方法解析. 比如: URL http://www.mapdigit.com/guidebeemap/maptile.php?type=MICROSOFTMAP&x=7&y=4&z=14 显示: 下面的例子访问Internet下载地图图片,并

Android简明开发教程十二:引路蜂二维图形库简介及颜色示例

AndroidGraphics2DTutorial定义了应用的主Activity,下面就可以开始写每个具体的二维绘图示例.不同的例子将尽量采用 不同的UI控件:Menu,Content Menu,Dialog,Custom Dialog,Button等等.例子采用了引路蜂二维图形库,引路蜂二维图形 库Graphics 2D API实现了移动平台(Java ME,Blackberry,iPhone,Android,Windows Phone)上图形引擎,它能够以一种统一的方 式处理各种基本图形(S

Android简明开发教程九:创建应用程序框架

Android简明开发教程八说明了程序需要实现的功能,就可以创建Android项目了.请参见Android简明开发教程三:第一个应 用Hello World ,创建一个新项目AndroidGraphics2DTutorial.今天先介绍创建的程序的框架.然后再项目添加如下类定义: 添加第三方库文件 AndroidGraphics2DTutorial调用了引路蜂二维图形库,因此需要在项目中添加第三方库引用(libgisengine.jar),打开 Android属性窗口,添加External JA