`
kanpiaoxue
  • 浏览: 1781641 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

GSON的简单使用示例

 
阅读更多

 

 

 

package test.zhizhi;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
 *
 * @ClassName Item
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime 2017/12/05 16:53:23
 * @Description 数据填充项
 */
public class Item {
    private Long id;
    private String name;
    private String code;
    private Long category;

    /**
     *
     * @author xuepeng
     * @CreateTime 2017/12/05 16:53:23
     */
    public Item() {
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        Item other = (Item) obj;
        if (category == null) {
            if (other.category != null) {
                return false;
            }
        } else if (!category.equals(other.category)) {
            return false;
        }
        if (code == null) {
            if (other.code != null) {
                return false;
            }
        } else if (!code.equals(other.code)) {
            return false;
        }
        if (id == null) {
            if (other.id != null) {
                return false;
            }
        } else if (!id.equals(other.id)) {
            return false;
        }
        if (name == null) {
            if (other.name != null) {
                return false;
            }
        } else if (!name.equals(other.name)) {
            return false;
        }
        return true;
    }

    /**
     * @return the category
     */
    public Long getCategory() {
        return category;
    }

    /**
     * @return the code
     */
    public String getCode() {
        return code;
    }

    /**
     * @return the id
     */
    public Long getId() {
        return id;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((category == null) ? 0 : category.hashCode());
        result = prime * result + ((code == null) ? 0 : code.hashCode());
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    /**
     * @param category the category to set
     */
    public void setCategory(Long category) {
        this.category = category;
    }

    /**
     * @param code the code to set
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * @param id the id to set
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        // Gson gson = new GsonBuilder().setPrettyPrinting().create();
        Gson gson = new GsonBuilder().create();
        return gson.toJson(this);
    }

}

 

 

package test.zhizhi;

/**
 *
 * @ClassName Result
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime 2017/12/05 16:40:23
 * @Description 结果包装类
 */
public class Result<T> {
    private static final int SUCCESS_RESULT = 1;
    private static final String SUCCESS_CODE = "SUCCESS";
    private static final String SUCCESS_MESSAGE = "成功";

    private Integer result;
    private String code;
    private String message;
    private T data;

    /**
     *
     * @author xuepeng
     * @CreateTime 2017/12/05 16:40:23
     */
    public Result() {
    }

    public static <T> Result<T> success(T data) {
        Result<T> rs = new Result<T>();
        rs.setResult(SUCCESS_RESULT);
        rs.setCode(SUCCESS_CODE);
        rs.setMessage(SUCCESS_MESSAGE);
        rs.setData(data);
        return rs;
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        Result<?> other = (Result<?>) obj;
        if (code == null) {
            if (other.code != null) {
                return false;
            }
        } else if (!code.equals(other.code)) {
            return false;
        }
        if (data == null) {
            if (other.data != null) {
                return false;
            }
        } else if (!data.equals(other.data)) {
            return false;
        }
        if (message == null) {
            if (other.message != null) {
                return false;
            }
        } else if (!message.equals(other.message)) {
            return false;
        }
        if (result == null) {
            if (other.result != null) {
                return false;
            }
        } else if (!result.equals(other.result)) {
            return false;
        }
        return true;
    }

    /**
     * @return the code
     */
    public String getCode() {
        return code;
    }

    /**
     * @return the data
     */
    public T getData() {
        return data;
    }

    /**
     * @return the message
     */
    public String getMessage() {
        return message;
    }

    /**
     * @return the result
     */
    public Integer getResult() {
        return result;
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((code == null) ? 0 : code.hashCode());
        result = prime * result + ((data == null) ? 0 : data.hashCode());
        result = prime * result + ((message == null) ? 0 : message.hashCode());
        result = prime * result + ((this.result == null) ? 0 : this.result.hashCode());
        return result;
    }

    /**
     *
     * @return 是否成功
     * @author xuepeng
     * @CreateTime 2017/12/05 17:16:57
     * @Description 判断当前的返回结果是否成功
     */
    public boolean isSuccess() {
        return SUCCESS_RESULT == this.result.intValue();
    }

    /**
     * @param code the code to set
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * @param data the data to set
     */
    public void setData(T data) {
        this.data = data;
    }

    /**
     * @param message the message to set
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * @param result the result to set
     */
    public void setResult(Integer result) {
        this.result = result;
    }

    /*
     * (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "Result [result=" + result + ", code=" + code + ", message=" + message + ", data=" + data
                + "]";
    }

}

 

package test.zhizhi;

import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.List;

/**
 *
 * @ClassName JSONExample
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime 2017/12/05 16:36:27
 * @Description JSON示例.
 * 
 * 
 *              pom.xml
 *              <dependency>
 *              <groupId>com.google.code.gson</groupId>
 *              <artifactId>gson</artifactId>
 *              <version>2.2.2</version>
 *              </dependency>
 * 
 *              <dependency>
 *              <groupId>com.google.guava</groupId>
 *              <artifactId>guava</artifactId>
 *              <version>23.0</version>
 *              </dependency>
 */
public class JSONExample {

    /**
     *
     * @param args
     * @author xuepeng
     * @CreateTime 2017/12/05 16:36:27
     * @Description
     */
    public static void main(String[] args) {
        JSONExample example = new JSONExample();

        // 生成模拟数据,模拟HTTP request返回的json结构字符串
        long size = 10L;
        List<Item> items = example.createItems(size);
        Result<List<Item>> result = example.createResult(items);
        String json = example.toJSON(result);

        System.out.println(String.format("get some json data from HTTP request:\n%s", json));

        // 开始解析json结构字符串
        // 1、判断返回的key 是否都存在。如果解析不抛出异常,那么就验证了该问题
        Result<List<Item>> rs = example.fromJSON(json);

        if (rs.isSuccess()) {
            List<Item> datas = rs.getData();
            // 2. data 中,数组的个数
            System.out.println("data's size : " + datas.size());
            for (Item item : datas) {
                // 3、每个数组总的key and value
                System.out.println(item);
            }
        } else {
            System.err.println(
                    String.format("ERROR: some exception occured. error message is: %s", rs.getMessage()));
        }

    }

    private List<Item> createItems(Long size) {
        List<Item> items = Lists.newArrayList();
        for (long i = 0; i < size; i++) {
            Item item = new Item();
            item.setId(i);
            item.setName("name-" + i);
            item.setCode("code-" + i);
            item.setCategory(i + 2L);
            items.add(item);
        }
        return items;
    }

    private Result<List<Item>> createResult(List<Item> items) {
        Result<List<Item>> rs = Result.success(items);
        return rs;
    }

    private Result<List<Item>> fromJSON(String json) {
        Gson gson = new GsonBuilder().create();
        Type type = new TypeToken<Result<List<Item>>>() {
        }.getType();
        Result<List<Item>> rs = gson.fromJson(json, type);
        return rs;
    }

    private String toJSON(Object obj) {
        // setPrettyPrinting() 的作用是格式化json结构,使其方便人眼来阅读。线上环境应该去掉,它会增加性能消耗
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.toJson(obj);
    }

}

 

 

分享到:
评论

相关推荐

    非常详细的gson使用方法

    要将这个用户对象转换为JSON字符串,可以使用Gson的`toJson()`方法: ```java Gson gson = new Gson(); String jsonString = gson.toJson(user); ``` `jsonString`现在包含了User对象的JSON表示。 2. JSON字符串转...

    Eclipse下使用Google Gson解析Json数据示例+Android Studio下使用Google Gson解析Json数据示例

    首先,我们来看Eclipse下的Gson使用示例。在Eclipse中,你需要先引入Gson库。这可以通过在项目构建路径中添加Gson的jar文件完成,或者如果你的项目是Maven项目,可以在pom.xml文件中添加对应的依赖: ```xml ...

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

    下面是如何使用Gson进行解析的示例: ```java String jsonString = ...; // JSON字符串 Gson gson = new Gson(); // 将JSON字符串转换为Java对象 Type collectionType = new TypeToken&lt;List&lt;User&gt;&gt;(){}.getType();...

    GsonDemo小例子

    通过这个示例,开发者可以学习如何在实际项目中有效地使用Gson来处理JSON数据,这对于任何涉及网络通信或需要存储结构化数据的应用来说都是至关重要的。无论是在Android开发还是普通的Java应用中,Gson都扮演着不可...

    Gson解析的一个例子

    在本例中,我们将深入探讨如何使用Gson库进行JSON解析。 首先,我们需要在项目中引入Gson库。如果你的项目是Maven或Gradle项目,可以在pom.xml或build.gradle文件中添加对应的依赖。对于Maven项目,添加如下依赖: ...

    我的gson学习例子

    这个“我的gson学习例子”显然是一份关于如何使用Gson进行JSON操作的学习资料。下面我们将详细探讨Gson库的使用方法和相关知识点。 首先,我们要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式...

    Gson简要使用笔记

    在这个例子中,我们使用了 `TypeToken` 类来指定目标类型为 `List&lt;Person&gt;`。`TypeToken` 是 Gson 提供的一个泛型安全的类型引用,用于在运行时捕获和表示类型信息。 除了默认行为外,Gson 还支持通过注解...

    Gson解析Json示例源码

    在Gson类库有一个Gson类,这个Gson类提供了两个方法:toJson() 和fromJson(),我们主要就是调用这两个方法来分别实现序列化Java对象为JSON字符串和反序列化JSON...通过代码示例来对Gson类的常用方法做一个简单介绍。

    Android Gson使用Demo

    在“GsonDemo”中,可能包含了示例代码,展示如何在Android的Activity或Fragment中使用Gson进行网络请求后的数据解析,以及如何在保存和读取本地数据时利用Gson。此外,可能还涉及到异常处理,如`...

    Android 下用GSON示例

    以下是一个简单的示例,展示了如何使用Gson进行序列化和反序列化操作: ```java // 定义一个Java对象 public class User { private String name; private int age; // 构造函数,getters和setters省略 @...

    Eclipse下使用Google Gson解析Json数据示例

    本教程将详细阐述如何在Eclipse环境中使用Gson来解析JSON数据。 首先,我们需要理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于语言的文本格式,...

    Android Gson使用实例Demo

    通过这些示例,开发者能够快速上手并灵活运用Gson进行JSON操作。在实际开发中,结合Android的网络请求库(如Retrofit或OkHttp),Gson可以更高效地处理网络返回的数据。同时,对于本地数据存储,如使用...

    Gson的基本使用

    `GsonDemo`通常是一个包含Gson使用示例的Java源文件,可能包含了各种序列化和反序列化的例子,如自定义类型适应器、处理日期类型、忽略字段等高级功能。通过这个示例文件,我们可以更深入地了解和学习Gson库的用法。...

    Gson项目使用

    Gson库的核心功能是将Java对象转换为它们对应的JSON字符串,反之亦然,使得JSON数据的处理变得简单而高效。 **一、Gson的基本用法** 1. **序列化(对象转JSON)** 当你需要将Java对象转换成JSON字符串时,可以...

    Android Gson解析案例

    这个"Android Gson解析案例"可能包含了如何在Android应用中使用Gson进行基本和高级的JSON操作的示例代码,帮助开发者更好地理解和掌握这一强大的工具。通过学习和实践这些案例,开发者能够提升自己的Android应用开发...

    android之json和gson数据解析最完整的代码例子(包括各种样式的json数据)

    JSON(JavaScript Object Notation)和Gson是Android开发中常用的数据序列化和反序列化工具,...以上就是关于“Android之json和gson数据解析最完整的代码例子”的详细介绍,希望对您在学习和使用JSON及Gson时有所帮助。

    使用Gson解析json数据

    本教程将重点介绍如何使用Gson库在Java环境中解析JSON数据。 Gson是Google提供的一款开源库,它能够将Java对象转换为对应的JSON字符串,也可以将JSON数据反序列化为Java对象。这对于处理JSON数据非常方便。在本示例...

    google gson 异步post访问服务器的例子。

    在这个例子中,我们将使用Gson与AsyncTask结合,构建一个简单的POST请求示例。 1. 首先,创建一个Java实体类,它代表要发送到服务器的数据。例如: ```java public class User { private String name; private ...

    gson转义字符

    本文介绍了如何在使用Gson时避免自动转义特殊字符的方法,通过示例代码展示了具体的实现过程。这对于需要处理含有特殊字符的数据场景非常有用。需要注意的是,在实际应用中还需要根据具体情况来决定是否使用该功能,...

Global site tag (gtag.js) - Google Analytics