Android的GSON数据解析

烈酒焚心 提交于 2019-12-24 19:12:56

GSON可以去GitHub上获取依赖

先看看我们准备解析的GSON代码
有数据头类型的复杂数据

{
  "totalHits": 500,
  "hits": [
    {
      "largeImageURL": "https://pixabay.com/get/55e0d340485aa814f6da8c7dda79367a113fd7ed50536c4870287cd5904fc15cb9_1280.jpg",
      "likes": 1051,
      "id": 3063284
    },
    {
      "largeImageURL": "https://pixabay.com/get/53e2d646424fad0bffd8992cc62c337e1c37dde74e50744e722e7cd69349c4_1280.jpg",
      "likes": 193,
      "id": 52358
    }
  ],
  "total": 22247
}

建立一个class
名字为 Test_one

package com.huatex.json_arr;

import java.util.List;

public class Test_one {
//这里对应上面json的    Key值
    private String totalHits;
    private String total;
    // list列表是因为上面的json有一个数组,这种包含关系的需要单独提出来
    // hits 是下面定义的,对应的是 [] 这个括号里面的内容
    //这个也可以定义到外面,然后调用
    private List<hits> hits;
    
// 这里是 重写和get,set  为了简洁我就不写了

    public class hits {
        private String largeImageURL;
        private String id;
        private String likes;

       // 这里是 重写和get,set  为了简洁我就不写了


}

Main方法

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //这里new一个Gson对象,下面要用
        Gson gson = new Gson();

        String s = "{\n" +
                "  \"totalHits\": 500,\n" +
                "  \"hits\": [\n" +
                "    {\n" +
                "      \"largeImageURL\": \"https://pixabay.com/get/55e0d340485aa814f6da8c7dda79367a113fd7ed50536c4870287cd5904fc15cb9_1280.jpg\",\n" +
                "      \"likes\": 1051,\n" +
                "      \"id\": 3063284\n" +
                "    },\n" +
                "    {\n" +
                "      \"largeImageURL\": \"https://pixabay.com/get/53e2d646424fad0bffd8992cc62c337e1c37dde74e50744e722e7cd69349c4_1280.jpg\",\n" +
                "      \"likes\": 193,\n" +
                "      \"id\": 52358\n" +
                "    }\n" +
                "  ],\n" +
                "  \"total\": 22247\n" +
                "}";
                //  这个解析的是外层的     这里传入两个参数  
        Test_one test_one = gson.fromJson(s,Test_one.class);
        //这里解析的是内层的 也就是 []  里面的内容
        List<Test_one.hits> hitsList = test_one.getHits();
        
        //这个代码可以直接解析到list列表里面
        //用这个可以不用上面那两个
        List<Test_one> userList = gson.fromJson(s, new TypeToken<List<Test_one>>(){}.getType());

    }
}

debug得到解析的内容
内外层都解析到了
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!