`

gson常用用法小结

阅读更多
gson是来自google的十分不错的json转换器,转换起来十分方便,今天小结下其中的一些用法:

1) 最基本的对象和json相互转换
POJO:
 
public class ModelObject {
  String name;
  int val;
  boolean status;
  double f;
  
  public ModelObject(String name, int val, 
  boolean status, double f) {
    super();
    this.name = name;
    this.val = val;
    this.status = status;
    this.f = f;
  }
  
  @Override
  public String toString() {
    return "ModelObject [name=" + name + ",
    val=" + val + ", status="
    + status + ", f=" + f + "]";
  }
 



  相互转换的代码:
final Gson gson = new Gson();
// original object instantiation
ModelObject modelObject = new ModelObject("myname", 12, true, 2.3);
System.out.println("toJson ---");
System.out.println("Original Java object : " + modelObject);
// converting an object to json object
String json = gson.toJson(modelObject);
System.out.println("Converted JSON string is : " + json);
 
System.out.println("fromJson----");
// getting object from json representation
System.out.println("Original JSON string is : " + json);
// converting json to object
ModelObject modelObject1 = gson.fromJson(json, ModelObject.class);
System.out.println("Converted Java object : " + modelObject1);


输出如下:

toJson ---
Original Java object : ModelObject [name=myname, val=12, status=true, f=2.3]
Converted JSON string is : {"name":"myname","val":12,"status":true,"f":2.3}
fromJson----
Original JSON string is : {"name":"myname","val":12,"status":true,"f":2.3}
Converted Java object : ModelObject [name=myname, val=12, status=true, f=2.3]



2) 针对泛型
   先看一个泛型的例子定义

 
public class GenericModel<T> {
  T value;
  
  public GenericModel(T value) {
    super();
    this.value = value;
  }
  
  @Override
  public String toString() {
    return "Model2 [value=" + value + "]";
  }
}


   然后转换方法如下:
Gson gson = new Gson();

System.out.println("A generic object demo");
// a generified object
GenericModel<Integer> model = new GenericModel<>(12);

// converting to json representation
String json = gson.toJson(model);
System.out.println("json representation :" + json);

// converting back to object
Type collectionType = new TypeToken<GenericModel<Integer>>() {
}.getType();
GenericModel<Integer> modelObj =
                  gson.fromJson(json, collectionType);
System.out.println("converted object representation: " + modelObj);

System.out.println("\nA object from collection framework\n");
// for collection framework objects
List<String> listOfString = new ArrayList<>();
listOfString.add("ajduke");
listOfString.add("ajduchess");

// conversion to json
String jsonStr = gson.toJson(listOfString);
System.out.println("json representation :" + jsonStr);

Type collectionType2 = new TypeToken<List<String>>() {
}.getType();
List<String> listObj = gson.fromJson(jsonStr, collectionType2);
System.out.println("converted object representation: " + listObj);

输出:
A generic object demo
json representation :{"value":12}
converted object representation: Model2 [value=12]

A object from collection framework

json representation :["ajduke","ajduchess"]
converted object representation: [ajduke, ajduchess]

也就是说,GSON把json转换为JAVA泛型对象的时候,要先定义好
Type collectionType = new TypeToken<GenericModel<Integer>>() {
}.getType()
告诉到底用什么类型,然后再用fromjson方法

3) 使用transient指定不需要转换为json的属性

 
public class ModelObject {
  String name;
  transient int val;
  boolean status;
  double f;
  
  public ModelObject(String name, int val, 
   boolean status, double f) {
    super();
    this.name = name;
    this.val = val;
    this.status = status;
    this.f = f;
  }
  
  @Override
  public String toString() {
    return "ModelObject [name=" + name + ",
    val=" + val + ", status="
    + status + ", f=" + f + "]";
  }
}


  则转换程序:
Gson gson = new Gson();
// original object
ModelObject modelObject = new ModelObject("namesake", 50, true, 4.3);
System.out.print("Original Java object : ");
System.out.println(modelObject);
 
// converting to an json representation
String json = gson.toJson(modelObject);
System.out.print("Converted JSON string is : ");
System.out.println(json);
 
// getting back the object from json representation
ModelObject modelObject3 = gson.fromJson(json, ModelObject.class);
System.out.print("Converted Java object : ");
System.out.println(modelObject3);



  则输出的信息中,就不会转换val了.

4) 也可以使用注解,指定哪些是要暴露转换的属性,如:
 
	@Expose
	private Integer businessId;


但这个时候要用
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation()
.create();
BusinessSystem bus = (BusinessSystem) (gson.fromJson(data,
BusinessSystem.class));

这样类似的方式转换;

4
2
分享到:
评论

相关推荐

    Gson对几种情况json数据解析Demo

    在Java开发中,Gson库是一个非常常用的工具,它由Google提供,用于将Java对象转换为JSON字符串,以及将JSON字符串反序列化回Java对象。本教程将详细讲解如何使用Gson库处理不同类型的JSON数据。 一、Gson库基础 1....

    Gson-Json.rar_gson

    下面将详细介绍Gson库的主要功能、用法以及常见应用场景。 一、Gson基本概念 1. JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript...

    gson和jsonBean解析json案例

    在Java开发中,处理JSON数据是一项常见的任务,而Gson和JsonBean是两个常用的库,用于将Java对象转换为JSON格式以及将JSON字符串反序列化为Java对象。本篇文章将详细探讨这两个库的使用方法,并通过一个具体的案例来...

    Json_Gson_FastJson解析

    在Java世界中,有多种库可以帮助我们解析和生成JSON,其中最常用的包括org.json、Google的Gson以及阿里巴巴的FastJson。下面我们将详细探讨这三种JSON解析库的使用方法。 1. **org.json**: org.json是一个开源的...

    java解析Json数据常用的两个解析库,实例分析.docx

    在Java编程中,处理JSON数据有两个常用的库:Gson和Fast-Json。 1. **Gson库**: - Gson是由Google提供的,它可以方便地将Java对象转换为JSON字符串,反之亦然。这个库以快速和高效著称,代码简洁,易于使用。 - ...

    JSON常用jar下载

    在Java中,常用的JSON库有Gson、Jackson、org.json和Fastjson等。这些库提供了方便的方法,将Java对象(如实体类)序列化为JSON字符串,以及将JSON字符串反序列化为Java对象。 描述中的“将实体类转换为JSON对象所...

    Json解析demo

    JackSon和Gson是Java开发中常用的两个JSON解析库。它们都提供了方便快捷的方式来序列化和反序列化Java对象为JSON字符串,以及将JSON字符串转换回Java对象。 1. **JackSon**:由FasterXML公司维护,是Java中非常流行...

    jason转换用法

    除了Jackson,Gson库也是常用的JSON处理工具,其API设计简洁,使用也很直观。例如,将JSON转换为Java对象: ```java import com.google.gson.Gson; Gson gson = new Gson(); Person person = gson.fromJson(json...

    Volley框架的常用方法

    总结起来,Volley是一个强大且易用的网络请求库,提供了丰富的功能,包括JSON处理、请求缓存、网络预检查等。通过掌握这些常用方法,开发者可以更高效地处理Android应用中的网络通信任务。不过,使用Volley时也需要...

    json类库,Java解析json必用

    JSON(JavaScript Object Notation)...理解这两个库的基本用法和特性,能够帮助开发者高效地进行数据交换和处理,提升项目的可维护性和性能。在实际项目中,可以根据具体需求选择合适的库,并利用其高级特性优化代码。

    解析json数组所用到的jar包以及demo

    总结,解析JSON数组在Java中是一项常见的任务,通过引入合适的jar包(如Jackson、Gson或org.json),我们可以轻松地完成这个任务。每个库都有其独特的优点和用法,选择哪一个取决于项目的需求和个人偏好。理解并熟练...

    JavaBean与Json相互转换

    此外,Gson库也是常用的Json处理库,它的用法与Jackson类似,但语法稍有不同。例如,Gson的转换方法如下: 1. 将JavaBean转换为Json字符串: ```java Gson gson = new Gson(); String jsonString = gson.toJson...

    Json解析工具

    本文将详细介绍几种常用的JSON解析工具及其用法。 #### 一、Gson解析JSON的特点 Gson是Google提供的一个开源库,用于将Java对象转换成JSON字符串,或将JSON字符串转换为等效的Java对象。Gson具有以下三个主要特点...

    JSON深入浅出用法

    常用的库有Jackson和Gson。 2. **使用注解简化操作** - `@RequestBody`:用于将请求体中的JSON数据转换为Java对象。 - `@ResponseBody`:用于将Java对象转换为JSON数据,并作为响应体返回。 #### 五、总结 ...

    Java解析json数据

    除了Jackson,Gson库也是常用的JSON解析工具,它的用法略有不同,但同样简单易用。例如,使用Gson将JSON字符串转化为Java对象: ```java import com.google.gson.Gson; public class GsonDemo { public static ...

    volley_okhttp_retrofit三种请求方式的基本用法

    本篇文章将详细讲解Volley、OkHttp和Retrofit这三种常用的网络请求库的基本用法,帮助开发者更好地理解和选择适合自己的请求方式。 **Volley** Volley是由Google官方推出的网络请求库,它专注于Android平台,提供...

    JDOM&DOM4J;&JSON;&COMMONSjar;包.zip

    总结来说,JDOM和DOM4J用于XML处理,JSON和Gson用于JSON操作,Apache Commons提供各种通用的工具方法,JSTL简化了JSP页面的编写,jQuery插件增强了前端交互,所有这些库都极大地丰富了Java开发者的工具箱,提高了...

    Android典型技术模块开发详解

    目录 第一篇 Android开发初步 第1章 Android初识 1.1 Android简介 1.1.1 认识Android 1.1.2 Android系统框架 1.1.3 应用程序框架 1.2 Eclipse开发环境 1.2.1 安装ADT插件 1.2.2 安装SDK ...16.7 本章小结

    json简单的解析

    另一个常用的JSON解析库是Gson,它是Google提供的。Gson的使用方式也类似,但语法有所不同。例如,使用Gson解析上述JSON字符串,我们需要在Java类中添加`@SerializedName`注解来指定JSON字段名,然后调用`fromJson`...

    cl-roadshow:通过代码总结具备路演的能力

    IoC、AOP加解密:DES、MD5、AESXML/JSON:fastjson、XStreamLog4j:常用的xml配置、输出栈桢的用法Commons BeanUtils:General:比较器、org.json.JSONObject、Google Gson、Alibaba Fastjson、时间戳、IP地址解析...

Global site tag (gtag.js) - Google Analytics