如何用Gson解析复杂的Json数据

本文介绍了一个用于自动生成实体类的网站,并提供了一段示例代码来展示如何使用Gson库解析复杂的嵌套JSON数据。重点在于解决自动生成过程中出现的问题,如@JsonProperty注解的处理及类型识别错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现了个极好的网站,是用来自动将json数据分化为实体类的

http://api.stay4it.com/json/index.html


首先,在他自动转化为实体类的过程中,会出现

@JsonProperty("isEnd")
   private int isend;

这种类型的实体数据

将@JsonProperty("isEnd")删掉,并将private int isend;改为isEnd,然后重新get set即可;

此外,在创建实体类的过程中,某些数据的类型会被识别错误,所以在自动生成实体类后检查一遍即可;

当实体类创建完毕后,利用Gson的API解析即可,当JSON数据最外层为[  ],即数组类型的JSON数据时,如下解析:

  
  
List < Person > ps = gson.fromJson(str, new TypeToken < List < Person >> (){}.getType()); for ( int i = 0 ; i < ps.size() ; i ++ ) { Person p = ps.get(i); System.out.println(p.toString()); }
当JSON数据的最外层为{   },即Object的JSON数据时,如下解析:

  
  
Person person = gson.fromJson(str, Person. class );



当实体类中嵌套多层List< >数据时,在代码中如下编辑即可:

 List<Person> result = p.getResults();


最后附上完整代码,自行理解。

        package com.example.zhouyuchen.gsontest;
        
        
        import android.app.Activity;
        import android.os.Bundle;
        import android.util.Log;
        
        import com.google.gson.Gson;
        import com.google.gson.reflect.TypeToken;
        
        import java.util.List;
        
        public class MainActivity extends Activity {
            private String JSON = "[\n" +
                    "\n" +
                    "    {\n" +
                    "        \"id\":1,\n" +
                    "        \"count\":25,\n" +
                    "        \"isEnd\":0,\n" +
                    "        \"children\":[\n" +
                    "            {\n" +
                    "                \"id\":57,\n" +
                    "                \"count\":3,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":150,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":57,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"cyxxs57\",\n" +
                    "                        \"targetName\":\"查阅信息数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":149,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":57,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"jdrc57\",\n" +
                    "                        \"targetName\":\"接待人次\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":148,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":57,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"cyds57\",\n" +
                    "                        \"targetName\":\"查阅点数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"tsg\",\n" +
                    "                \"targetName\":\"图书馆\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":56,\n" +
                    "                \"count\":3,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":147,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":56,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"cyxxs56\",\n" +
                    "                        \"targetName\":\"查阅信息数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":146,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":56,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"jdrc56\",\n" +
                    "                        \"targetName\":\"接待人次\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":145,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":56,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"cyds56\",\n" +
                    "                        \"targetName\":\"查阅点数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"dag\",\n" +
                    "                \"targetName\":\"档案馆\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":55,\n" +
                    "                \"count\":3,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":144,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":55,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"cyxxs55\",\n" +
                    "                        \"targetName\":\"查阅信息数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":143,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":55,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"jdrc55\",\n" +
                    "                        \"targetName\":\"接待人次\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":142,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":55,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"cyds55\",\n" +
                    "                        \"targetName\":\"查阅点数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"zwfwzx\",\n" +
                    "                \"targetName\":\"政务服务中心\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":54,\n" +
                    "                \"count\":1,\n" +
                    "                \"isEnd\":1,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"qttjzdgkzfxxts\",\n" +
                    "                \"targetName\":\"其他途径主动公开政府信息条数\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":53,\n" +
                    "                \"count\":3,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":141,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":53,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"gkzfxxts53\",\n" +
                    "                        \"targetName\":\"公开政府信息条数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":140,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":53,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"zfgbckqs\",\n" +
                    "                        \"targetName\":\"政府公报出刊期数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":139,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":53,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"byzfgbs\",\n" +
                    "                        \"targetName\":\"办有政府公报数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"zfgbgkqk\",\n" +
                    "                \"targetName\":\"政府公报公开情况\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":52,\n" +
                    "                \"count\":3,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":138,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":52,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"zjxxgksj52\",\n" +
                    "                        \"targetName\":\"最近信息公开时间\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":137,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":52,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"gkzfxxts52\",\n" +
                    "                        \"targetName\":\"公开政府信息条数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":136,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":52,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"ktzwwxgs\",\n" +
                    "                        \"targetName\":\"开通政务微信个数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"zfwxgkqk\",\n" +
                    "                \"targetName\":\"政务微信公开情况\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":51,\n" +
                    "                \"count\":3,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":135,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":51,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"zjgksj51\",\n" +
                    "                        \"targetName\":\"最近信息公开时间\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":134,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":51,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"gkzfxxts51\",\n" +
                    "                        \"targetName\":\"公开政府信息条数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":133,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":51,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"ktzwwbgs\",\n" +
                    "                        \"targetName\":\"开通政务微博个数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"zfwbgkqk\",\n" +
                    "                \"targetName\":\"政务微博公开情况\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":50,\n" +
                    "                \"count\":5,\n" +
                    "                \"isEnd\":0,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"children\":[\n" +
                    "                    {\n" +
                    "                        \"id\":111,\n" +
                    "                        \"count\":2,\n" +
                    "                        \"isEnd\":0,\n" +
                    "                        \"parentInditarator\":50,\n" +
                    "                        \"children\":[\n" +
                    "                            {\n" +
                    "                                \"id\":113,\n" +
                    "                                \"count\":1,\n" +
                    "                                \"isEnd\":1,\n" +
                    "                                \"parentInditarator\":111,\n" +
                    "                                \"topInditarator\":1,\n" +
                    "                                \"code\":\"zjxxgksj\",\n" +
                    "                                \"targetName\":\"最近信息公开时间\",\n" +
                    "                                \"targetCategory\":4,\n" +
                    "                                \"size\":0\n" +
                    "                            },\n" +
                    "                            {\n" +
                    "                                \"id\":112,\n" +
                    "                                \"count\":1,\n" +
                    "                                \"isEnd\":1,\n" +
                    "                                \"parentInditarator\":111,\n" +
                    "                                \"topInditarator\":1,\n" +
                    "                                \"code\":\"zfxxgkmlgks\",\n" +
                    "                                \"targetName\":\"政府信息公开目录公开数\",\n" +
                    "                                \"targetCategory\":4,\n" +
                    "                                \"size\":0\n" +
                    "                            }\n" +
                    "                        ],\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"zfxxgkmlgkqk\",\n" +
                    "                        \"targetName\":\"政府信息公开目录公开情况\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":110,\n" +
                    "                        \"count\":1,\n" +
                    "                        \"isEnd\":1,\n" +
                    "                        \"parentInditarator\":50,\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"zfwzgks\",\n" +
                    "                        \"targetName\":\"政府网站公开数\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    },\n" +
                    "                    {\n" +
                    "                        \"id\":130,\n" +
                    "                        \"count\":2,\n" +
                    "                        \"isEnd\":0,\n" +
                    "                        \"parentInditarator\":50,\n" +
                    "                        \"children\":[\n" +
                    "                            {\n" +
                    "                                \"id\":132,\n" +
                    "                                \"count\":1,\n" +
                    "                                \"isEnd\":1,\n" +
                    "                                \"parentInditarator\":130,\n" +
                    "                                \"topInditarator\":1,\n" +
                    "                                \"code\":\"zjgksj130\",\n" +
                    "                                \"targetName\":\"最近信息公开时间\",\n" +
                    "                                \"targetCategory\":4,\n" +
                    "                                \"size\":0\n" +
                    "                            },\n" +
                    "                            {\n" +
                    "                                \"id\":131,\n" +
                    "                                \"count\":1,\n" +
                    "                                \"isEnd\":1,\n" +
                    "                                \"parentInditarator\":130,\n" +
                    "                                \"topInditarator\":1,\n" +
                    "                                \"code\":\"wztgmlwgks\",\n" +
                    "                                \"targetName\":\"网站通过目录外公开数\",\n" +
                    "                                \"targetCategory\":4,\n" +
                    "                                \"size\":0\n" +
                    "                            }\n" +
                    "                        ],\n" +
                    "                        \"topInditarator\":1,\n" +
                    "                        \"code\":\"wztgmlwgkqk\",\n" +
                    "                        \"targetName\":\"网站通过目录外公开情况\",\n" +
                    "                        \"targetCategory\":3,\n" +
                    "                        \"size\":0\n" +
                    "                    }\n" +
                    "                ],\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"zfwzgkqk\",\n" +
                    "                \"targetName\":\"政府网站公开情况\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            },\n" +
                    "            {\n" +
                    "                \"id\":49,\n" +
                    "                \"count\":1,\n" +
                    "                \"isEnd\":1,\n" +
                    "                \"parentInditarator\":1,\n" +
                    "                \"topInditarator\":1,\n" +
                    "                \"code\":\"zdgkzfxxzts\",\n" +
                    "                \"targetName\":\"主动公开政府信息总条数\",\n" +
                    "                \"targetCategory\":2,\n" +
                    "                \"size\":0\n" +
                    "            }\n" +
                    "        ],\n" +
                    "        \"code\":\"zdgk\",\n" +
                    "        \"targetName\":\"主动公开\",\n" +
                    "        \"targetCategory\":1,\n" +
                    "        \"size\":0\n" +
                    "    }\n" +
                    "\n" +
                    "]";
        
        
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                Gson gson = new Gson();
                List<Gsonbean> g = gson.fromJson(JSON, new TypeToken<List<Gsonbean>>() {
                }.getType());
                String a = g.get(0).getChildren().get(0).getChildren().get(0).getCode();
                Log.i("asdzxc", a+"");
        
            }
        
        
        }

package com.example.zhouyuchen.gsontest;

import java.util.List;


public class Gsonbean {

    private int id;
    private int count;
    private int isEnd;
    private List<Children> children;
    private String code;
    private String targetName;
    private int targetCategory;
    private int size;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getIsEnd() {
        return isEnd;
    }

    public void setIsEnd(int isEnd) {
        this.isEnd = isEnd;
    }

    public List<Children> getChildren() {
        return children;
    }

    public void setChildren(List<Children> children) {
        this.children = children;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getTargetName() {
        return targetName;
    }

    public void setTargetName(String targetName) {
        this.targetName = targetName;
    }

    public int getTargetCategory() {
        return targetCategory;
    }

    public void setTargetCategory(int targetCategory) {
        this.targetCategory = targetCategory;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }
}

package com.example.zhouyuchen.gsontest;


import java.util.List;

public class Children {

    private int id;
    private int count;
    private int isEnd;
    private int parentInditarator;
    private int topInditarator;
    private String code;
    private String targetName;
    private int targetCategory;
    private int size;
    private List<Children>children;

    public List<Children> getChildren() {
        return children;
    }

    public void setChildren(List<Children> children) {
        this.children = children;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public int getIsEnd() {
        return isEnd;
    }

    public void setIsEnd(int isEnd) {
        this.isEnd = isEnd;
    }

    public int getParentInditarator() {
        return parentInditarator;
    }

    public void setParentInditarator(int parentInditarator) {
        this.parentInditarator = parentInditarator;
    }

    public int getTopInditarator() {
        return topInditarator;
    }

    public void setTopInditarator(int topInditarator) {
        this.topInditarator = topInditarator;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getTargetName() {
        return targetName;
    }

    public void setTargetName(String targetName) {
        this.targetName = targetName;
    }

    public int getTargetCategory() {
        return targetCategory;
    }

    public void setTargetCategory(int targetCategory) {
        this.targetCategory = targetCategory;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值