欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单使用Gson

程序员文章站 2022-03-13 12:53:23
...

依赖:

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.20</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
    		<groupId>com.google.code.gson</groupId>
   			 <artifactId>gson</artifactId>
   			 <version>2.8.5</version>
		</dependency>

entity:

/**
 * @author : lichenfei 
 * @date : 2018年12月20日
 * @time : 下午3:46:07  
 *
 */
package com.lcf.entity;

import java.util.Date;

import lombok.AllArgsConstructor;
//import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * @author : lichenfei
 * @date : 2018年12月20日
 * @time : 下午3:46:07
 *
 */
//@Data
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Person {
    private String name;
    private int age;
    private Date birthday;
    private String sex;

}

测试类:

/**
 * @author : lichenfei 
 * @date : 2018年12月21日
 * @time : 上午9:57:50  
 *
 */
package com.lcf.test;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.lcf.entity.Person;

/**
 * @author : lichenfei
 * @date : 2018年12月21日
 * @time : 上午9:57:50
 *
 *       
 */
public class GsonTest {
    private static final Gson gson = new Gson();

    /**
     * bean转json
     * 
     * 输出:{"name":"lcf","age":23,"birthday":"Dec 21, 2018 10:04:08 AM","sex":"m"}
     */
    @Test
    public void test1() {
	Person per = new Person("lcf", 23, new Date(), "m");
	System.out.println(gson.toJson(per));// 会自动处理值为null的属性
    }

    /**
     * map转json
     * 
     * {"list":[{"name":"lcf","age":23,"birthday":"Dec 21, 2018 10:08:59 AM","sex":"m"}]}
     */
    @Test
    public void test2() {
	Map<String, Object> map = new HashMap<String, Object>();
	List<Person> lists = new ArrayList<Person>();
	lists.add(new Person("lcf", 23, new Date(), "m"));
	map.put("list", lists);
	System.out.println(gson.toJson(map));
    }

    /**
     * json转bean
     * 
     * Person(name=lcf, age=23, birthday=Fri Dec 21 10:04:08 CST 2018, sex=m)
     */
    @Test
    public void test3() {
	String strJson = "{\"name\":\"lcf\",\"age\":23,\"birthday\":\"Dec 21, 2018 10:04:08 AM\",\"sex\":\"m\"}";
	System.out.println(gson.fromJson(strJson, Person.class).toString());
    }

    /**
     * 解析json(1)--->根据实体类进行解析
     */
    @Test
    public void test4() {
	String json = "{\"name\":\"lcf\",\"age\":23,\"birthday\":\"Dec 21, 2018 10:08:59 AM\",\"sex\":\"m\"}";
	Person person = new Gson().fromJson(json, Person.class);
	System.out.println("name:" + person.getName());
	System.out.println("age:" + person.getAge());
	System.out.println("sex:" + person.getSex());
	System.out.println("birthday:" + person.getBirthday());
	/*  输出:
	name:lcf
	age:23
	sex:m
	birthday:Fri Dec 21 10:04:08 CST 2018*/
    }

    /**
     * 解析json(2)--->直接访问:
     */
    @Test
    public void test5() {
	String json = "{\"name\":\"lcf\",\"age\":23,\"birthday\":\"Dec 21, 2018 10:04:08 AM\",\"sex\":\"m\"}";
	JsonObject jsonObject = (JsonObject) new JsonParser().parse(json);
	System.out.println("name:" + jsonObject.get("name").getAsString());
	System.out.println("age:" + jsonObject.get("age").getAsInt());
	System.out.println("sex:" + jsonObject.get("sex").getAsString());
	System.out.println("birthday:" + new Date(jsonObject.get("birthday").getAsString()).toString());
	/*  输出:
	name:lcf
	age:23
	sex:m
	birthday:Fri Dec 21 10:04:08 CST 2018*/
    }

    /**
     * GsonBuilder
     *
     */
    @Test
    public void test6() {
	Gson gson = new GsonBuilder()
		//.serializeNulls() // 序列化时输出为null的属性值
		.setDateFormat("yyyy-MM-dd HH:mm:ss")// 格式化日期
		.create();
	Map<String, Object> map = new HashMap<String, Object>();
	List<Person> lists = new ArrayList<Person>();
	lists.add(new Person("lcf", 23, new Date(), "m"));
	map.put("list", lists);
	map.put("title", "你好");
	map.put("key", null);
	// 输出: {"list":[{"name":"lcf","age":23,"birthday":"2018-12-21 11:24:58","sex":"m"}],"title":"你好"}
	System.out.println(gson.toJson(map));
    }

    /*
     * setFieldNamingPolicy
     * 设置序列字段的命名策略(UPPER_CAMEL_CASE,UPPER_CAMEL_CASE_WITH_SPACES,
     * LOWER_CASE_WITH_UNDERSCORES,LOWER_CASE_WITH_DASHES)
     * addDeserializationExclusionStrategy
     * 设置反序列化时字段采用策略ExclusionStrategy,如反序列化时不要某字段,当然可以采用@Expore代替。
     * excludeFieldsWithoutExposeAnnotation 设置没有@Expore则不序列化和反序列化
     * addSerializationExclusionStrategy 设置序列化时字段采用策略,如序列化时不要某字段,当然可以采用@Expore代替。
     * registerTypeAdapter 为某特定对象设置固定的序列和反序列方式,实现JsonSerializer和JsonDeserializer接口
     * setFieldNamingStrategy 设置字段序列和反序列时名称显示,也可以通过@Serializer代替 setPrettyPrinting
     * 设置gson转换后的字符串为一个比较好看的字符串 setDateFormat 设置默认Date解析时对应的format格式
     */

}

…新人,有什么问题多多指导.

相关标签: gson