Gson解析json,比Json-lib更加的方便

本文详细介绍了如何使用Gson库解析不同类型的JSON数据,并通过映射对象类来处理复杂数据结构。通过两个示例展示了简单JSON数据与包含数组的复杂JSON数据的解析方法,以及如何获取JSON中的特定字段。

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

public class ParseJson {
	String json1 = "{\"name\":\"gaofeng\",\"age\":\"20\"}";
	String json2 = "{\"total\":\"100\",\"rows\":[{\"name\":\"张三\",\"age\":\"20\"},{\"name\":\"李四\",\"age\":\"22\"}]}";

	/**
	 * ParseJson类介绍如何解析不同类型的json格式的数据
	 * test1格式比较简单
	 * test2格式稍微复杂点
	 * */
	@Test
	public void test1() {
		// 需要解析的json数据
		System.out.println("json1:" + json1);
		Gson gson = new Gson();
		rows json_data=gson.fromJson(json1, rows.class);
		
		System.out.println("Age:"+json_data.getAge()+"  Name:"+json_data.getName());		
		System.out.println("~~~~~~~~~~~~~~~~");
  
	}

	@Test
	public void test2() {
		// 需要解析的json数据
		System.out.println("json2:" + json2);
		Type type = new TypeToken<mess>() {}.getType();
		
		Gson gson = new Gson();
		mess mess_info = gson.fromJson(json2, type);
		System.out.println("total:"+mess_info.getTotal());
		System.out.println("rows的值:"+mess_info.getRows().size());
		for (int i = 0; i < mess_info.getRows().size(); i++) {
			System.out.println("第"+(i+1)+"轮:");
			System.out.println("Name:" + mess_info.getRows().get(i).getName()+"  Age:" + mess_info.getRows().get(i).getAge());			
		}
	}
}


映射对象类:

<span style="font-size:14px;">public class mess {
	private int total;
	private List<rows> rows;

	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public List<rows> getRows() {
		return rows;
	}
	public void setRows(List<rows> rows) {
		this.rows = rows;
	}
}</span>
public class rows {

	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}
输出的结果:

json1:{"name":"gaofeng","age":"20"}
Age:20  Name:gaofeng
~~~~~~~~~~~~~~~~
json2:{"total":"100","rows":[{"name":"张三","age":"20"},{"name":"李四","age":"22"}]}
total:100
rows的值:2
第1轮:
Name:张三  Age:20
第2轮:
Name:李四  Age:22


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值