Java操作JSON数据(2)--Gson操作JSON数据

Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象。本介绍下Gson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java 1.8.0_191、Gson 2.8.6。

1、引入依赖

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>

2、序列化

    public static String serialize() {
        MyBean bean = new MyBean();
        bean.setS("测试字符串");
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.HOUR_OF_DAY, -1);
        bean.setD(calendar.getTime());

        List<MyBean> list = new ArrayList<MyBean>();
        list.add(bean);
        Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>();
        map.put("data", list);

        Gson gson = new GsonBuilder()
                .serializeNulls() //序列化值为null的字段
                .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式
                .excludeFieldsWithModifiers(Modifier.STATIC)//根据修饰符过滤字段
                .create();
        String result = gson.toJson(map);
        System.out.println(result);
        return result;
    }

3、反序列化

    public static void deserialize() {
        String s = serialize();
        Gson gson = new GsonBuilder()
                .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式
                .create();
        Type type = new TypeToken<Map<String, List<MyBean>>>(){}.getType();
        Map<String, List<MyBean>> map =  gson.fromJson(s, type);
        System.out.println(map);

        //直接通过api获取相应数据
        JsonElement element = JsonParser.parseString(s);
        JsonArray data = element.getAsJsonObject().getAsJsonArray("data");
        JsonObject bean = data.get(0).getAsJsonObject();
        System.out.println(bean.get("s").getAsString());
        //...
    }

4、完整例子

package com.inspur.demo.json;

import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

/**
 * Gson操作JSON数据
 */
public class GsonCase {
    /**
     * 序列化
     */
    public static String serialize() {
        MyBean bean = new MyBean();
        bean.setS("测试字符串");
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.HOUR_OF_DAY, -1);
        bean.setD(calendar.getTime());

        List<MyBean> list = new ArrayList<MyBean>();
        list.add(bean);
        Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>();
        map.put("data", list);

        Gson gson = new GsonBuilder()
                .serializeNulls() //序列化值为null的字段
                .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式
                .excludeFieldsWithModifiers(Modifier.STATIC)//根据修饰符过滤字段
                .create();
        String result = gson.toJson(map);
        System.out.println(result);
        return result;
    }

    /**
     * 反序列化
     */
    public static void deserialize() {
        String s = serialize();
        Gson gson = new GsonBuilder()
                .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式
                .create();
        Type type = new TypeToken<Map<String, List<MyBean>>>(){}.getType();
        Map<String, List<MyBean>> map =  gson.fromJson(s, type);
        System.out.println(map);

        //直接通过api获取相应数据
        JsonElement element = JsonParser.parseString(s);
        JsonArray data = element.getAsJsonObject().getAsJsonArray("data");
        JsonObject bean = data.get(0).getAsJsonObject();
        System.out.println(bean.get("s").getAsString());
        //...
    }

    public static void main(String[] args) {
        serialize();
        deserialize();
    }

}

GsonCase

package com.inspur.demo.json;

import java.util.Arrays;
import java.util.Date;

public class MyBean {
    private String s = "字符串";
    private String s2;
    private String s3 = "字符串3";
    private int i = 123;
    private Integer i2;
    private char c = ‘到‘;
    private char[] c2 = new char[]{‘a‘, ‘b‘};
    private Date d = new Date();
    private Date[] d2 = new Date[]{new Date(), new Date()};
    public String getS() {
        return s;
    }
    public void setS(String s) {
        this.s = s;
    }
    public String getS2() {
        return s2;
    }
    public void setS2(String s2) {
        this.s2 = s2;
    }
    public String getS3() {
        return s3;
    }
    public void setS3(String s3) {
        this.s3 = s3;
    }
    public int getI() {
        return i;
    }
    public void setI(int i) {
        this.i = i;
    }
    public Integer getI2() {
        return i2;
    }
    public void setI2(Integer i2) {
        this.i2 = i2;
    }
    public char getC() {
        return c;
    }
    public void setC(char c) {
        this.c = c;
    }
    public char[] getC2() {
        return c2;
    }
    public void setC2(char[] c2) {
        this.c2 = c2;
    }
    public Date getD() {
        return d;
    }
    public void setD(Date d) {
        this.d = d;
    }
    public Date[] getD2() {
        return d2;
    }
    public void setD2(Date[] d2) {
        this.d2 = d2;
    }
    @Override
    public String toString() {
        return "MyBean [s=" + s + ", s2=" + s2 + ", s3=" + s3 + ", i=" + i + ", i2=" + i2 + ", c=" + c + ", c2="
                + Arrays.toString(c2) + ", d=" + d + ", d2=" + Arrays.toString(d2) + "]";
    }
}

MyBean

原文地址:https://www.cnblogs.com/wuyongyin/p/12001016.html

时间: 2024-10-07 00:41:27

Java操作JSON数据(2)--Gson操作JSON数据的相关文章

json数据格式和gson解析json的应用

首先json的数据格式分为三种:数组.对象.数组对象混合 数组格式: {"asd","qwe","ffe"} 对象格式: {"a":1,"b":2,"c":3}  注意写代码中要加入转义字符\来获取双引号:\" 数组对象混合格式: {   [ {"a":1,"b":2}, {"c":3,"d":4}

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

我的Android进阶之旅------&gt;解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai", articletype: "1&

Gson操作json

github:https://github.com/google/gson API:http://google.github.io/gson/apidocs/ 示例对象 1 package present; 2 3 public class School { 4 private int id; 5 6 public int getId() { 7 return id; 8 } 9 10 private Address address; 11 12 public Address getAddres

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

通过Gson解析Json数据

Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22gson%22 一.Json数据样式 为了便于理解我们先来看看Json的数据样式: 1. 单个数据对象 { "id": 100, "body": "It is my post", "numbe

android_使用Gson解析json数据

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海". 第三种类型是映射(mapping),也就是一个名/值对(

Json概述以及python对json的相关操作

转载自:http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html 什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但

Json概述以及python对json的相关操作《转》

什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).这