Gson Json
Posted 小半夏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gson Json相关的知识,希望对你有一定的参考价值。
原文链接:https://blog.csdn.net/qq_34394010/article/details/78180289 (侵删)
JSON是javascript对象的一种形态,是一种轻量级的数据交换格式。一般用来在Java EE后台服务和android或者ios、H5之间进行通信的一种数据传递的格式。
JSON的基本格式:
{ “name”:"zhangsan", "age":23, "list":[ {"score",2}, {"score",3}, {"score",4}, ] }
JSON2:
{ "name":"zhangsan", "age":23, "sex":"男", "intersts":[ {"interest":"篮球"}, {"interest":"足球", "colors":[ {"color":"红色"}, {"color":"蓝色"} ]} ] }
而Gson是谷歌推出的一个用于生成和解析JSON数据格式的工具;
在使用gson之前需要先导入依赖,在这里我使用的是2.8.0版本的gson jar包,
首先我们创建一个UserBean的类和一个内部类InterestBean,代码大概如下:
import java.util.List; public class UserBean { private String name; private Integer age; private List<InterestBean> interests; public String getName() {return name;} public void setName(String name) {this.name = name;} public Integer getAge() {return age;} public void setAge(Integer age) {this.age = age;} public List<InterestBean> getInterests() {return interests;} public void setInterests(List<InterestBean> interests) {this.interests = interests;}@Overridepublic String toString() {return "UserBean [name=" + name + ", age=" + age + ", interests=" + interests + "]";} public class InterestBean{private String interest; private List<String> colors; public String getInterest() {return interest;} public void setInterest(String interest) {this.interest = interest;} public List<String> getColors() {return colors;} public void setColors(List<String> colors) {this.colors = colors;}} }
User Bean的属性包括name、age、一个interestBean集合;
1、一个比较常见的json字符串: String json1="{\'name\':\'zhangsan\',\'age\':23}"; 解析:Gson gson = new Gson(); UserBean bean = gson.fromJson(json1, UserBean.class); System.out.println(bean);
解析一个json数组:
String json2="[{\'name\':\'zhangsan\'},{\'name\':\'lisi\'},{\'name\':\'王五\'}]";
解析:
JSONArray jsonArray = new JSONArray(json2); for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String name = jsonObj.getString("name");
System.out.println(name);
}
这里需要导入一个json jar包,才能使用jsonArray和JSONOBJECT;
注意:import org.json.JSONArray;
import org.json.JSONObject;
解析一个map类型的json字符串:
String json3="{\'1\':{\'name\':\'zhangsan\'},\'3\':{\'name\':\'lisi\'},\'4\':{\'name\':\'wangwu\'}}"
解析:
JSONObject jsonObj = new JSONObejct(json3); Gson gson = new Gson(); Map<String,UserBean> map = gson.fromJson(new TypeToken<Map<String,UserBean>>(){}.getTypeToken()); for(UserBean bean:map.values()){ System.out.println(bean); }
解析一个比较复杂的json字符串:
String json4="{\'name\':\'zhangsan\',\'age\':23,\'interests\':[{\'interest\':\'篮球\',\'colors\':[\'绿色\',\'黄色\']},{\'interest\':\'足球\',\'colors\':[\'红色\',\'蓝色\']}]}";
分析:json4最外层是一个json字符串,内层包含一个json数组,数组是由两个json字符串组成,而在内部的json字符串中又包含json数组
解析:
JSONObject jsonObject = new JSONObject(json4); String userName = jsonOBject.getString("name");//可以获得用户的名称 JSONArray jsonArray = jsonObjct.getJSONArray("interests"); for(int i=0;i<jsonArray.length();i++){ JSONObject jsonTwo = jsonArray.getJSONObejct(i); String interest = jsonObjectTwo.getString("interest"); JSONArray jsonArrayThree= jsonObjectTwo.getJSONArray("colors"); for(int j=0;j<jsonArrayThree.length();i++){ System.out.println(jsonArrayThree.getString(j)); } }
以上是关于Gson Json的主要内容,如果未能解决你的问题,请参考以下文章