Android之GSON解析JSON

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。

比如:

 

<pre name="code" class="java">public class Order {
	public String id;
	public String OrderName;	
	@Override
	public String toString() {
		return "id:"+id+",OrderName:"+OrderName;
	}
}

 

 

 

 

 

public class GsonTest {
	public static void main(String[] args) {
		Order order=new Order();
		order.id="1";
		order.OrderName="Book";

		Gson gson=new Gson();
		String toJson=gson.toJson(order);
		System.out.println("Order--->JSON:\n"+toJson);
		Order fromJson=gson.fromJson(toJson,Order.class);
		System.out.println("JSON--->Order:\n"+fromJson);
	}	
}

 

 

输出:

 

Order--->JSON:
{"id":"1","OrderName":"Book"}
JSON--->Order:
id:1,OrderName:Book

 

接下来我们讲解GSON解析JSON的几种情况

1、模板反射对象

 

<span style="font-size:18px;">public class GsonTest {
	public static void main(String[] args) {
		List<Order> orderList=new ArrayList<Order>();
		Order order1=new Order();
		order1.id="1";
		order1.OrderName="Book";
		Order order2=new Order();
		order2.id="2";
		order2.OrderName="Fruit";
		orderList.add(order1);
		orderList.add(order2);
		
		Gson gson=new Gson();
		Type type=new TypeToken<List<Order>>(){}.getType();
		String toJson=gson.toJson(orderList,type);
		System.out.println("Order--->JSON:\n"+toJson);
		List<Order> fromJson=gson.fromJson(toJson,type);
		System.out.println("JSON--->Order:\n"+fromJson);
	}	
}</span>


输出:

 

Order--->JSON:
[{"id":"1","OrderName":"Book"},{"id":"2","OrderName":"Fruit"}]
JSON--->Order:
[id:1,OrderName:Book, id:2,OrderName:Fruit]

 

2、集合使用

 

public class GsonTest {
	public static void main(String[] args) {
		HashMap<String, Object> orderMap=new HashMap<String , Object>();
		Order order1=new Order();
		order1.id="1";
		order1.OrderName="Book";
		Order order2=new Order();
		order2.id="2";
		order2.OrderName="Fruit";
		orderMap.put("order1", order1);
		orderMap.put("order2", order2);
		
		Gson gson=new Gson();
		Type type=new TypeToken<HashMap<String,Object>>(){}.getType();
		String toJson=gson.toJson(orderMap,type);
		System.out.println("Order--->JSON:\n"+toJson);
		HashMap<String, Object> fromJson=gson.fromJson(toJson,type);
		System.out.println("JSON--->Order:\n"+fromJson);
	}	
}


输出:

 

Order--->JSON:
{"order2":{"id":"2","OrderName":"Fruit"},"order1":{"id":"1","OrderName":"Book"}}
JSON--->Order:
{order2={id=2, OrderName=Fruit}, order1={id=1, OrderName=Book}}

 

3、嵌套使用对象

 

public class Book {
	public String id;
	public String name;
	public String price;
}

 

public class Order {
	public String id;
	public String OrderName;	
	public ArrayList<Book> bookList;
	public HashMap<String, Book> bookMap;
}

 

public class GsonTest {
	public static void main(String[] args) {
		Book book1=new Book();
		book1.id="1001";
		book1.name="Java Think";
		book1.price="23";
		Book book2=new Book();
		book2.id="1002";
		book2.name="Gson Test";
		book2.price="45";
		HashMap<String, Book> orderMap=new HashMap<String , Book>();
		orderMap.put("orderMap1", book1);
		orderMap.put("orderMap2", book2);
		ArrayList<Book> orderList=new ArrayList<Book>();
		orderList.add(book1);
		orderList.add(book2);
		
		
		Order order=new Order();
		order.id="1";
		order.OrderName="Book";
		order.bookMap=orderMap;
		order.bookList=orderList;
		
		
		Gson gson=new Gson();
		Type type=new TypeToken<Order>(){}.getType();
		String toJson=gson.toJson(order,type);
		System.out.println("Order--->JSON:\n"+toJson);
		Order fromJson=(Order)gson.fromJson(toJson,type);
		System.out.println("JSON--->Order:\n"+fromJson);
	}	
}

 

 

 

输出:

Order--->JSON:
{"id":"1","OrderName":"Book","bookList":[{"id":"1001","name":"Java Think","price":"23"},{"id":"1002","name":"Gson Test","price":"45"}],"bookMap":{"orderMap2":{"id":"1002","name":"Gson Test","price":"45"},"orderMap1":{"id":"1001","name":"Java Think","price":"23"}}}
JSON--->Order:
Gson.Order@181eda8

 

 

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42242863    情绪控_

 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值