Gson解析JSON-创新互联

1.介绍

Gson是Google提供的处理JSON数据的Java类库,主要用于转换Java对象和JSON对象。

创新互联公司主要从事成都网站设计、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务通州,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
2.依赖
com.google.code.gsongson2.8.5
3. 解析JSON对象

利用Gson将复杂的JSON数据转化成Java对象。

先创建一个java对象,记得导入lombok的依赖

import lombok.Data;

@Data
public class BookModel {
    private String id;
    private String language;
    private String edition;
    private String author;
}

在使用Gson解析数据时,需要对其实例化,具体操作方式有两种。

public static void main(String[] args) {
        final Gson gson = new Gson(); //实例化
        final Gson gson1 = new GsonBuilder().create();  //实例化二
    }

在实例化Gson之后,可以使用Gson类中提供的方法将JSON字符串转化成指定的Java对象

案例

public static void main(String[] args) {
        //json对象
        String json = "{\n" +
                "    \"id\":1,\n" +
                "    \"language\":\"java\",\n" +
                "    \"edition\":\"one\",\n" +
                "    \"author\":\"张三\"\n" +
                "}";
        Gson gson = new Gson();
        //创建java对象
        BookModel bookModel = gson.fromJson(json, BookModel.class);
        //输出数据
        System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());


    }
4.解析JSON数组

使用Gson解析JSON数组时,需要使用Gson类中提供的方法将JSON数组转化成指定类型的集合,方法如下: 

该方法的输入参数类型为String和Type。其中,引入Type类型是为了支持对泛型的操作。在Gson包中,可以使用TypeToken类来创建Type对象。

public static void main(String[] args) {
        //json对象
        String json = "[\n" +
                "    {\n" +
                "        \"id\":1,\n" +
                "        \"language\":\"java\",\n" +
                "        \"edition\":\"one\",\n" +
                "        \"author\":\"张三\"\n" +
                "    },\n" +
                "    {\n" +
                "        \"id\":2,\n" +
                "        \"language\":\"C++\",\n" +
                "        \"edition\":\"two\",\n" +
                "        \"author\":\"李四\"\n" +
                "    }\n" +
                "]";
        Gson gson = new Gson();
        //TypeToken操作 ,可支持类型包括泛型
        final Type listMl = new TypeToken>(){}.getType();
        //转换成集合
        ListfromJson = gson.fromJson(json, listMl);
        for (BookModel bookModel : fromJson) {
            System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());

        }


    }
5.解析复杂嵌套式的JSON数据

我们再创建一个java实体,之前的实体不要删了

@Data
class  BookSummaryModel{
    private String goodRateShow;
    private  String poorRateShow;
    private String poorCountStr;
    private Listbook;
}

案例

public static void main(String[] args) {
        //json对象
        String json = "{\n" +
                "    \n" +
                "        \"goodRateShow\":99,\n" +
                "        \"poorRateShow\":\"123\",\n" +
                "        \"poorCountStr\":\"500\",\n" +
                "      \n" +
                "    \n" +
                "\"book\":\n" +
                "   [ {\n" +
                "        \"id\":2,\n" +
                "        \"language\":\"C++\",\n" +
                "        \"edition\":\"two\",\n" +
                "        \"author\":\"李四\"\n" +
                "    },{\n" +
                "        \"id\":1,\n" +
                "        \"language\":\"java\",\n" +
                "        \"edition\":\"one\",\n" +
                "        \"author\":\"张三\"\n" +
                "    }\n" +
                "]\n" +
                "}\n" +
                "\n";


        final Gson gson = new Gson();
        final BookSummaryModel bookSummaryModel = gson.fromJson(json, BookSummaryModel.class);
        //从对象中获取集合
        final ListmodelList = bookSummaryModel.getBook();
        for (BookModel bookModel : modelList) {
            System.out.println(bookModel.getId()+"\t"+bookModel.getLanguage());
        }

    }

另外,Gson还提供了其他JSON处理的方法,如toJson()。 

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:Gson解析JSON-创新互联
标题网址:http://myzitong.com/article/coohis.html