Google Gson的使用方法,实现Json结构的相互转换

在Java开发中,有时需要保存一个数据结构成字符串,可能你会考虑用Json,但是当Json字符串转换成Java对象时,转换成的是JsonObject,并不是你想要的Class类型的对象,操作起来就很不是愉悦,下面说的就可以解决了这种问题。

首先,需要把Google的Gson的Jar包导入到项目中,这个导入包的简单步骤就不展示了,Gson的下载链接:http://download.csdn.net/detail/qxs965266509/8367275

现在,我先自定义一个Class类

[java] view
plain
copy

  1. public class Student {
  2. public int id;
  3. public String nickName;
  4. public int age;
  5. public ArrayList<String> books;
  6. public HashMap<String, String> booksMap;
  7. }

案例一,案例二,案例三都是把Java的Class对象使用Gson转换成Json的字符串

案例一:

仅包含基本数据类型的数据结构

[java] view
plain
copy

  1. Gson gson = new Gson();
  2. Student student = new Student();
  3. student.id = 1;
  4. student.nickName = "乔晓松";
  5. student.age = 22;
  6. student.email = "[email protected]";
  7. Log.e("MainActivity", gson.toJson(student));

输出结果是 :

[java] view
plain
copy

  1. {"email":"[email protected]","nickName":"乔晓松","id":1,"age":22}

案例二:

除了基本数据类型还包含了List集合

[java] view
plain
copy

  1. Gson gson = new Gson();
  2. Student student = new Student();
  3. student.id = 1;
  4. student.nickName = "乔晓松";
  5. student.age = 22;
  6. student.email = "[email protected]";
  7. ArrayList<String> books = new ArrayList<String>();
  8. books.add("数学");
  9. books.add("语文");
  10. books.add("英语");
  11. books.add("物理");
  12. books.add("化学");
  13. books.add("生物");
  14. student.books = books;
  15. Log.e("MainActivity", gson.toJson(student));

输出结果是 :

[html] view
plain
copy

  1. {"books":["数学","语文","英语","物理","化学","生物"],"email":"[email protected]","nickName":"乔晓松","id":1,"age":22}

案例三:

除了基本数据类型还包含了List和Map集合

[java] view
plain
copy

  1. Gson gson = new Gson();
  2. Student student = new Student();
  3. student.id = 1;
  4. student.nickName = "乔晓松";
  5. student.age = 22;
  6. student.email = "[email protected]";
  7. ArrayList<String> books = new ArrayList<String>();
  8. books.add("数学");
  9. books.add("语文");
  10. books.add("英语");
  11. books.add("物理");
  12. books.add("化学");
  13. books.add("生物");
  14. student.books = books;
  15. HashMap<String, String> booksMap = new HashMap<String, String>();
  16. booksMap.put("1", "数学");
  17. booksMap.put("2", "语文");
  18. booksMap.put("3", "英语");
  19. booksMap.put("4", "物理");
  20. booksMap.put("5", "化学");
  21. booksMap.put("6", "生物");
  22. student.booksMap = booksMap;
  23. Log.e("MainActivity", gson.toJson(student));

输出结果是 :

[java] view
plain
copy

  1. {"books":["数学","语文","英语","物理","化学","生物"],"booksMap":{"3":"英语","2":"语文","1":"数学","6":"生物","5":"化学","4":"物理"},"email":"[email protected]","nickName":"乔晓松","id":1,"age":22}

案例四:

把案例三输出的字符串使用Gson转换成Student对象

[java] view
plain
copy

  1. Gson gson = new Gson();
  2. Student student = new Student();
  3. student.id = 1;
  4. student.nickName = "乔晓松";
  5. student.age = 22;
  6. student.email = "[email protected]";
  7. ArrayList<String> books = new ArrayList<String>();
  8. books.add("数学");
  9. books.add("语文");
  10. books.add("英语");
  11. books.add("物理");
  12. books.add("化学");
  13. books.add("生物");
  14. student.books = books;
  15. HashMap<String, String> booksMap = new HashMap<String, String>();
  16. booksMap.put("1", "数学");
  17. booksMap.put("2", "语文");
  18. booksMap.put("3", "英语");
  19. booksMap.put("4", "物理");
  20. booksMap.put("5", "化学");
  21. booksMap.put("6", "生物");
  22. student.booksMap = booksMap;
  23. String result = gson.toJson(student);
  24. Student studentG = gson.fromJson(result, Student.class);
  25. Log.e("MainActivity", "id:" + studentG.id);
  26. Log.e("MainActivity", "nickName:" + studentG.nickName);
  27. Log.e("MainActivity", "age:" + studentG.age);
  28. Log.e("MainActivity", "email:" + studentG.email);
  29. Log.e("MainActivity", "books size:" + studentG.books.size());
  30. Log.e("MainActivity", "booksMap size:" + studentG.booksMap.size());

输出结果是 :

[html] view
plain
copy

  1. id:1
  2. nickName:乔晓松
  3. age:22
  4. email:[email protected]
  5. books size:6
  6. booksMap size:6

通过这4个案例我解决你一定就把Gson的基本用法学会了,当然我们的需求可能需要把List或者Map等集合的泛型换成我们自定义个class,这也是可以解决的,请看案例

案例五:

泛型的使用

[html] view
plain
copy

  1. public HashMap<String,Book> booksMap;
  2. public class Book{
  3. public int id;
  4. public String name;
  5. }

把booksMap转换成字符串和上面的案例是一样的,但是booksMap的Json字符串换成booksMap的实例对象就有点不同了,因为booksMap有自定义的泛型

[html] view
plain
copy

  1. HashMap<String, Book> booksMap = gson.fromJson(result, new TypeToken<HashMap<String, Book>>() { }.getType());
时间: 2024-11-05 11:55:06

Google Gson的使用方法,实现Json结构的相互转换的相关文章

Android原生方式解析Json,Gson三方框架方式解析Json

package com.example.administrator.test.Fragment.Login; import android.support.v4.media.VolumeProviderCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import c

Android的Gson的使用方法,实现Json结构间相互转换

一,把数组,对象,List,Map等数据结构转换成Json字符串 import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.Type

Android网络之数据解析----使用Google Gson解析Json数据

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4063452.html 联系方式:[email protected] [正文] 文章回顾: Android网络之数据解析----SAX方式解析XML数据 一.Json数据的介绍                                                             

[转]Json转换神器之Google Gson的使用

这几天,因为项目的需要,接触了Google的Gson库,发现这个东西很好用,遂记下简单的笔记,供以后参考.至于Gson是干什么的,有什么优点,请各位同学自行百度.话不多说,切入正题: 1. 下载Gson的jar包,拷贝到项目的lib文件夹中,并将其加入到buildPath中.使用maven的同学,直接在pom中加入以下依赖即可: ? 1 2 3 4 5 <dependency> <groupId>com.google.code.gson</groupId> <ar

Android程序 依赖库引用Gson 报java.lang.NoClassDefFoundError: com/google/gson/Gson 解决方法

Android 程序所依赖一个Library程序B , B 程序中用到格式化json串,转换成标准json串的要求 public static String jsonFormatter(String uglyJSONString) { Gson gson = new GsonBuilder().setPrettyPrinting().create(); JsonParser jp = new JsonParser(); JsonElement je = jp.parse(uglyJSONStri

Google Gson解析Json数据应用实例

转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/ 1.需要的Jar包 1) Google Gson(gson-xxx.jar)下载地址:http://code.google.com/p/google-gson/downloads/list 2)JUnit4 2. 应用实例代码 下载地址:http://download.csdn.net/source/3499627 包括如下类: 1)普通Jav

利用new Gson()的toJson方法将map对象转成json字符串

1 package mpsm.mcpsm.operation.demandInfoLoad.service; 2 3 import java.sql.ResultSet; 4 import java.text.DecimalFormat; 5 import java.util.ArrayList; 6 import java.util.HashMap; 7 import java.util.List; 8 9 import mpsm.mcpsm.operation.demandInfoLoad.

google gson

发现了google的gson,因为之前对于protocolbuf有一些了解,带着一些好奇心,我开始使用了gson. 经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段. 下面是一个简单的例子: Java代码   public class Person { private String name; private int age; /*

Gson把对象转成json格式的字符串

最近在做一个java web service项目,需要用到jason,本人对java不是特别精通,于是开始搜索一些java平台的json类库. 发现了google的gson,因为之前对于protocolbuf有一些了解,带着一些好奇心,我开始使用了gson. 经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段. 下面是一个简单的例子: