版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/J_Demon/article/details/50321391
楼主是才加入工作一个半月的新人,每天努力学习,勤勤恳恳.....
经过一个月的学习,工作也进入到更深一点的层次了,相对于我来说。目前我参与的是接口这块,系统A传递一条json字符串的数据,我参与的系统B解析这条数据,然后做一系列的处理。项目用的是谷歌的Gson,没用过,于是开始学习。经过两周的使用...自己总结一下,以便不时之需。
1.gson解析一般的json格式字符串
String json = "{\"name\":\"张三\",\"sex\":\"男\"}";
Gson gson = new Gson();
Map<String,Object> map = gson.fromJson(json, new TypeToken<Map<String, Object>>(){}.getType());
System.out.println("姓名==="+map.get("name").toString());
System.out.println("性别==="+map.get("sex").toString());
执行结果:
姓名===张三
性别===男
2.gson解析json数组格式字符串
String json = "[{\"name\":\"张三\",\"sex\":\"男\"},{\"name\":\"李四\",\"sex\":\"女\"}]";
Gson gson = new Gson();
List<Map<String,Object>> map = gson.fromJson(json, new TypeToken<List<Map<String, Object>>>(){}.getType());
for (Map<String, Object> map2 : map) {
System.out.print("姓名==="+map2.get("name").toString());
System.out.println(",性别==="+map2.get("sex").toString());
}
执行结果:
姓名===张三,性别===男
姓名===李四,性别===女
3.gson解析复杂的json格式字符串
这是就要写一个javaBean来序列化数据。
数据:
String json = "{\"name\":\"张三\",\"sex\":\"男\",\"job\":[{\"job1\":\"程序员\",\"job2\":\"老司机\"},{\"job1\":\"程序员1\",\"job2\":\"老司机1\"}],\"hobby\":{\"hobby1\":\"摄影\",\"hobby2\":\"游戏\"}}";
JavaBean类,直接写的内部类,也可以分开写,需注意,如果数据中字段是[ ]这种,类中就写List<Job> job,{ }就写 Hobby hobby;
public class JsonBean {
private String name;
private String sex;
private List<Job> job;
private Hobby hobby;
public static class Job {
private String job1;
private String job2;
public String getJob1() {
return job1;
}
public void setJob1(String job1) {
this.job1 = job1;
}
public String getJob2() {
return job2;
}
public void setJob2(String job2) {
this.job2 = job2;
}
}
public static class Hobby {
private String hobby1;
private String hobby2;
public String getHobby1() {
return hobby1;
}
public void setHobby1(String hobby1) {
this.hobby1 = hobby1;
}
public String getHobby2() {
return hobby2;
}
public void setHobby2(String hobby2) {
this.hobby2 = hobby2;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public List<Job> getJob() {
return job;
}
public void setJob(List<Job> job) {
this.job = job;
}
public Hobby getHobby() {
return hobby;
}
public void setHobby(Hobby hobby) {
this.hobby = hobby;
}
}
代码片段:
Gson gson = new Gson();
Type type = new TypeToken<JsonBean>(){}.getType();
JsonBean jsonBean = gson.fromJson(json, type);
List<Job> jobList = jsonBean.getJob();
System.out.println("姓名:"+jsonBean.getName()+",性别:"+jsonBean.getSex());
for (Job job : jobList) {
System.out.println("工作1:"+job.getJob1()+",工作2:"+job.getJob2());
}
System.out.println("爱好1:"+jsonBean.getHobby().getHobby1()+",爱好2:"+jsonBean.getHobby().getHobby2());
执行结果:
姓名:张三,性别:男
工作1:程序员,工作2:老司机
工作1:程序员1,工作2:老司机1
爱好1:摄影,爱好2:游戏
4. gson解析复杂的json数组格式字符串
这种和上面的差不多,就是数据外多了一对[ ]括号,javaBean类不变,代码稍作改变即可。
String json = "[{\"name\":\"张三\",\"sex\":\"男\",\"job\":[{\"job1\":\"程序员\",\"job2\":\"老司机\"},{\"job1\":\"程序员1\",\"job2\":\"老司机1\"}],\"hobby\":{\"hobby1\":\"摄影\",\"hobby2\":\"游戏\"}}]";
Gson gson = new Gson();
Type type = new TypeToken<List<JsonBean>>(){}.getType();
<span style="color:#FF0000;"> <span style="color:#000000;">List<JsonBean></span></span> jsonBean = gson.fromJson(json, type);
for (JsonBean jsonBean2 : jsonBean) {
List<Job> jobList = jsonBean2.getJob();
System.out.println("姓名:"+jsonBean2.getName()+",性别:"+jsonBean2.getSex());
for (Job job : jobList) {
System.out.println("工作1:"+job.getJob1()+",工作2:"+job.getJob2());
}
System.out.println("爱好1:"+jsonBean2.getHobby().getHobby1()+",爱好2:"+jsonBean2.getHobby().getHobby2());
}
输出结果和上面一样。