gson解析json字符串学习笔记...

版权声明:本文为博主原创文章,未经博主允许不得转载。 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());
        }
输出结果和上面一样。

猜你喜欢

转载自blog.csdn.net/J_Demon/article/details/50321391
今日推荐