json和gson傻傻分不清楚

来源:互联网 发布:网络配音招聘 编辑:程序博客网 时间:2024/05/16 09:02

我相信很多同学会跟我一样,对于json和gson傻傻分不清楚,不知道什么时候用json、什么时候用gson;

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;
}

@Override
public 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);

运行结果如下图:

如果有同学以为为什么自己打印的是地址的话,建议去看一下java基础中的重写toString方法

2、解析一个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;

这里导入的类是这两个类,不要导错;

3、解析一个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);

}

4、解析一个比较复杂的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));

  }

}

运行结果如下图:

常用的类型大概就这么多,这也是我根据自己碰到的情况进行的一点儿小小的总结,欢迎各位指正

原创粉丝点击