`
阿尔萨斯
  • 浏览: 4178233 次
社区版块
存档分类
最新评论

Java4Android之Gson

 
阅读更多

一般而言,我们通过http请求传送数据,采用json数据传输。如何解析json,一个我们用的库是Gson。我引用一个入门的例子在此,作为学习范本。在后续的相关代码中,其实是会使用到的。

参考及转载:

http://www.cnblogs.com/chenlhuaf/archive/2011/05/01/gson_test.html

http://blog.sina.com.cn/s/blog_64e467d60101ibpd.html


使用Gson进行解析:下载google-gson-2.2.2-release.zip包。

包含两种主要操作:一种是将对象或者不同的内容转化为JSON格式,一种是将JSON格式的内容还原到相应的对象属性或者其他属性。

1、首先使用:Gson gson = new Gson();<wbr></wbr>创建gson对象

2、要把数据转化为JSON格式时,可以在新建一个JavaBean类:

publicclassPerson {

<wbr><wbr><wbr></wbr></wbr></wbr>privateStringname;

<wbr><wbr><wbr></wbr></wbr></wbr>privateintage;

<wbr><wbr><wbr></wbr></wbr></wbr>publicString getName() {

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>returnname;

<wbr><wbr><wbr></wbr></wbr></wbr>}

<wbr><wbr><wbr></wbr></wbr></wbr>publicvoidsetName(String name) {

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>this.name= name;

<wbr><wbr><wbr></wbr></wbr></wbr>}

<wbr><wbr><wbr></wbr></wbr></wbr>publicintgetAge() {

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>returnage;

<wbr><wbr><wbr></wbr></wbr></wbr>}

<wbr><wbr><wbr></wbr></wbr></wbr>publicvoidsetAge(intage) {

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>this.age= age;

<wbr><wbr><wbr></wbr></wbr></wbr>}

<wbr><wbr><wbr></wbr></wbr></wbr>@Override

<wbr><wbr><wbr></wbr></wbr></wbr>publicString toString() {

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>returnname+":"+age;

<wbr><wbr><wbr></wbr></wbr></wbr>}

}

<wbr></wbr>

在主函数中使用如下语句:

Person p =newPerson();

p.setAge(22);

p.setName("Curry");

persons.add(p);//Person对象加入到gson

String str = gson.toJson(p);

<wbr></wbr>

直接输出,得到以下结果:{"name":"Curry","age":22}

<wbr></wbr>

而当在gson中加入list类型的对象时:

Listpersons=newArrayList();

for(inti = 0; i < 3; i++) {

<wbr><wbr><wbr></wbr></wbr></wbr><wbr><wbr><wbr></wbr></wbr></wbr>Person p =newPerson();

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>p.setName("name"+ i);

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>p.setAge(i * 5);

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>persons.add(p);

<wbr><wbr><wbr></wbr></wbr></wbr>}

String str = gson.toJson(persons);

将输出以下结果:(格式是数组类型的)[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10}]

<wbr></wbr>

HashMap tool =newHashMap();

tool.put("ID","22");

String str = gson.toJson(tool);

以上表示加入的对象本身就是Map类型的,则输出以下结果:{"ID":"22"}

<wbr></wbr>

而如果加入的JavaBean中还包括其他的List类型的数据,例如:(代码片段)

publicclassPerson {

<wbr><wbr><wbr></wbr></wbr></wbr>privateStringname;

<wbr><wbr><wbr></wbr></wbr></wbr>privateintage;

<wbr><wbr><wbr></wbr></wbr></wbr>privateArrayListcar;

则输出结果变成这样:

[{"name":"name0","age":0,"car":["cc","ford"]},{"name":"name1","age":5,"car":["cc","ford"]},{"name":"name2","age":10,"car":["cc","ford"]}]

1、<wbr><wbr></wbr></wbr>解析JSON对象,将其还原为JavaBean,或者相应的数据类型

String json = "{\"name\":\"Duke\",\"address\":\"Menlo Park\",\"dateOfBirth\":\"Feb 1, 2000 12:00:00 AM\"}";//JSON格式的数据

Gson gson =newGson();

Student student = gson.fromJson(json, Student.class);//指定了要还原的class,保存在gson中。

System.out.println("student.getName()<wbr></wbr>= "+ student.getName());

System.out.println("student.getAddress() = "+ student.getAddress());

System.out.println("student.getDateOfBirth() = "

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>+ student.getDateOfBirth());//可以直接从student对象中获取到所有数据了。

<wbr></wbr>

4、如果Json对象本身是List形式的,或者其他的类型,则采用以下方法:

可以借助TypeToken获取泛型参数的类型。

String json ="[{\"name\":\"Duke\",\"address\":\"Menlo Park\",\"dateOfBirth\":\"Feb 1, 2000 12:00:00 AM\"}]";

Gson gson =newGson();

//使用Type类,取得相应类型对象的class属性。

Type listType=newTypeToken<ArrayList<Student>>(){}.getType();//TypeToken内的泛型就是Json数据中的类型

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ArrayList list = gson.fromJson(json, listType);//使用该class属性,获取的对象均是list类型的

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>System.out.println("student.getName()<wbr></wbr>= "+ list.get(0).getName());//list中取得内容即可

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>System.out.println("student.getAddress() = "+ list.get(0).getAddress());

<wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>System.out.println("student.getDateOfBirth() = "

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>+ list.get(0).getAddress());

<wbr></wbr>

<wbr></wbr>

因此,无论是把对象转化为Json格式,还是把Json格式还原为对象时,都需要确定好相应的数据类型或者JavaBean的格式。这样就可以很方便的使用Gson进行转化了。

分享到:
评论

相关推荐

    java_gson.zip_android_gson

    android使用gson解析,精选学习源码,很好的参考资料。

    GSON JAR包 最新包和历史包 gson-2.10.1

    介绍:Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. 压缩包里有以下文件: ...

    Gson工具类JsonUtils

    Gson工具类JsonUtils 将java对象装换为json,支持泛型和任意类型

    gson包重复冲突,项目不能正常编译1

    android studio编译出现如下问题:Program type already present: com.google.gson.FieldAttrib

    gson-2.8.5版本的jar包

    Android引入GSON: implementation ‘com.google.code.gson:gson:2.9.0’ Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

    Gson解析复杂Json实例,超简单

    解放你的双手,不用再去一个一个JSONObject去处理解析问题,两行代码搞定一切

    Gson与Map互相转化

    java Gson 与map互相转换的小demo示例

    android-directory-listing-java-realm-gson-retrofit:使用Java(分支中的Kotlin),Realm,Retrofit,Glide等的示例Android目录列表。

    android-目录列表-java-realm-gson-retrofit 由迈克尔·斯蒂尔(Michael Steele)在17年3月13日创建。 版权所有:copyright:2017 Michael Steele。 版权所有。 进行中的开发-使用Java,Realm,Retrofit2,Glide,SSL...

    Google开发的Gson类库

    GitHub上的开源项目。GSON是Google开发的Java API,用于转换Java对象和Json对象。

    使用Gson解析Json数据

    1、生成Json数据 2、使用Gson解析Json数据(单个json对象、json数组和json对象内嵌json数组) // 这里有两篇好心人的博文,有详细的讲解 http://www.jb51.net/article/32547.htm ...

    gson-2.8.6.jar下载

    gson库简单易用,性能良好,所以很受欢迎,被广泛应用于Android和Java项目中。 gson的主要功能有: 1. 可以将Java对象转换成JSON字符串,也可以将JSON字符串转换成Java对象。 2. 支持复杂的Java对象和JSON的相互转换,例如...

    googleGson JsonObject json转换包

    包含以下java源文件: com.google.gson.DefaultDateTypeAdapter.class com.google.gson.ExclusionStrategy.class com.google.gson.FieldAttributes.class com.google.gson.FieldNamingPolicy.class ...

    Immutables-Android-Example:在Android和GSON上使用Immutables 2.0的示例

    在Android和GSON上使用小示例。 您还可以按照《 的 使用以下User模型: @Gson.TypeAdapters @Value.Immutable public abstract class User { public abstract int id(); public abstract String username(); } ...

    Gson包工具类

    Java对象和Json之间的互转,Gson是主要类库之一。 可用于json,数组,对象之间的互转。 具体实现方法可百度,非常简单方便。

    gson-2.3.1.zip

    gson是进行json解析的有利工具,十分的好用,可以把json字符串实例化为对象,非常好!

    Android代码-stag-java

    Stag Stag improves Gson ... Unfortunately, using reflection can be slow (particularly on the Android OS). You can work around this by writing a custom TypeAdapter, a class that Gson uses to (de)se

    gson-2.7.jar.zip

    在android开发中,在java文件中需要解析json数据,往往需要使用gson的jar包,才能运行成功

    gson.jar&Android;服务请求代码

    Android Java 开发,转换Json数据,绝对可用。我写了代码范例,同时附加了通过HttpURLConnection发送Json数据的服务请求源码。

    gson-2.8.2-jar包资源

    gson-2.8.2-jar包资源。供大家使用!

    Android代码-android

    Esta LIB é um jar simples que só funciona no ambiente Android, portanto, embora seja JAR não é possivel utilizá-la em um ambiente JAVA SE ou mesmo JAVA EE. Requisitos para utilizar a LIB em seu ...

Global site tag (gtag.js) - Google Analytics