Gson 解析 json中 value为数组

这篇博客介绍了如何使用Gson库解析JSON数据,特别是当JSON中的值为数组时。文章通过示例展示了简单的类型转换以及针对复杂类型的反射方法。提供了一种既适用于简单类型也适用于复杂类型的解决方案。

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

1 本文的json数据格式:

{
  "hotcolumns":[
	{
	  "client": "mobile",
	  "cname": "看东西",
	  "ename": "ldax",
	  "hot": true,
	},
	{
	  "client": "mobile",
	  "cname": "仁说",
	  "ename": "sda,
	  "hot": true,
	}
  ]
}

2 生成的model(JavaBean)


import java.util.List;


public class JsonBean {

    public List<Hotcolumns> hotcolumns;

    public List<Hotcolumns> getHotcolumns() {
        return hotcolumns;
    }

    public void setHotcolumns(List<Hotcolumns> hotcolumns) {
        this.hotcolumns = hotcolumns;
    }

   
/*
   "client": "mobile",
		"cname": "看东西",
		"ename": "ldx",
		"hot": true,
		
    */

    public static class Hotcolumns {

        public String client;
        public String cname;
        public String ename;
        public String hot;
        

       
        public String getClient() {
            return client;
        }

        public void setClient(String client) {
            this.client = client;
        }

        public String getCname() {
            return cname;
        }

        public void setCname(String cname) {
            this.cname = cname;
        }

        public String getEname() {
            return ename;
        }

        public void setEname(String ename) {
            this.ename = ename;
        }

        public String getHot() {
            return hot;
        }

        public void setHot(String hot) {
            this.hot = hot;
        }

        
    }


}

3 调用

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        String json =readLocalJson(this);  //读取数据 实际项目中一般加载网络数据:需异步请求网络
        json=json.replace("\t","");
        Gson gson = new Gson();
        java.lang.reflect.Type type = new TypeToken<JsonBean>() {}.getType();
        JsonBean jsonBean = gson.fromJson(json, type); //JsonBean.class

    }
    public static String readLocalJson(Context context){//这里测试程序 放在本地
        String jsonString="";
        String resultString="";

        try {
            InputStream inputStream = context.getResources().openRawResource(R.raw.test);
            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
            while ((jsonString=bufferedReader.readLine())!=null) {
                resultString+=jsonString;
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return resultString;
    }


}
ps:android studio中 GSon库导入比较简单:build.gradle中添加依赖: dependencies { compile 'com.google.code.gson:gson:2.2.4'}

若为简单的类型 可使用: gson.from(json JsonBean.class)

若为复杂的类型 :  使用反射

本文两者皆可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值