【第21篇】通过Gson去把字符串转成json,对象转成Json,数组转换成Json处理Json数据

本文介绍了如何使用Gson库将字符串、对象和数组转换为Json格式,以及如何解析Json数据。示例包括将Address对象转为Json,将Json字符串反序列化为对象,以及将数组转换成Json。同时展示了从Json数据中提取信息的方法。
摘要由CSDN通过智能技术生成
package ivyy.taobao.com.domain.gson;

import ivyy.taobao.com.entity.Address;
import ivyy.taobao.com.utils.GlobalConstants;
import ivyy.taobao.com.utils.HttpRequestUtils;
import ivyy.taobao.com.utils.IoUtils;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
@SuppressWarnings("all")
/**
 *@Date:2015-1-5
 *@Author:liangjilong
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description:
 */
public class JsonMap {
	private static Gson gson=new Gson();
	//jsonmap.json文件
	public static void main(String[] args) throws Exception {
		//也可以从jsonmap.json通过文件流读取
		//setDataByGson();
		//getDataByGson("URL");
		getDataByGson("FILE");
		//getStrToJsonByGson();
		//getObjectToJsonByGson();
		//getArrayToJsonByGson();
		///
	}


	/**
	 * ByGson把字符串转换成Json数据
	 * @throws Exception
	 */
	private static void getStrToJsonByGson()throws Exception
	{
		//String jsonStr="{\"city\":\"广州市\",\"province\":\"广东省\"}"; //这本身是json数据,也是字符串!
		 String jsonStr="{city:广州市,province:广东省}"; 
		 Address addr =gson.fromJson(jsonStr,Address.class);//把字符串转换成Json
		 String json=gson.toJson(addr);//把对象转换成json
		 System.out.println(json);
		 System.out.println(addr.getProvince()+"\t"+addr.getCity());
	}

	/**
	 * Gson结合反射对象,把对象转换成Json数据
	 * @throws Exception
	 */
	private static void getObjectToJsonByGson()throws Exception
	{
		 Address addr = new Address(); 
		 addr.setProvince("广东省");
		 addr.setCity("广州市");
		 String json=gson.toJson(addr);//把对象转换成Json
		 //创建一个JsonParser对象
		 //JsonParser parser = new JsonParser();  
		 //创建一个JsonElement对象
         //JsonElement jsonEl = parser.parse(json);  
		 Type type = new TypeToken<Address>(){}.getType();//通过反射
		 Address add= gson.fromJson(json,type);
		 //Address add= gson.fromJson(jsonEl,type);
		 System.out.println(add.getProvince()+"\t"+add.getCity());
	}
	
	
	
	
	
	/**
	 * 通过Gson把数组转换成Json数据
	 * @param url
	 * @throws Exception
	 */
	private static void getArrayToJsonByGson()throws Exception
	{
		List<Address> lists=new ArrayList<Address>();
		for (int i = 1; i <=12; i++) {
			Address addr = new Address(); 
			addr.setProvince("第"+i+"个省份");
			addr.setCity("第"+i+"个城市");
			lists.add(addr);
		}
		String json=gson.toJson(lists);//把数组对象转换成Json
		Type type = new TypeToken<List<Address>>(){}.getType();//通过反射
		List<Address> adds= gson.fromJson(json,type);
		for (Address a:adds) {
			System.out.println(a.getCity());
		}
	}
	/**
	 * 通过Gson组装Json数据
	 */
	private  static void setDataByGson(){
		///组装json
		 JsonObject jsonObject=new JsonObject();
		 Map<String, String> lists = new HashMap <String, String>(); 
		 
		 lists.put("country", "中国");
		 lists.put("province", "广东省");
		 lists.put("city", "云浮市");
		 lists.put("district", "云城区闻莺路东升布艺");
		 lists.put("street", "闻莺路");
			
         String json=gson.toJson(lists);//转换成json数据
         System.out.println(json); //输出json
         
         ///获取json
         JsonParser parser = new JsonParser();
		 JsonElement jsonEl = parser.parse(json);
         JsonObject jsonObjRoot = null;
         jsonObjRoot = jsonEl.getAsJsonObject();
         if(jsonObjRoot.isJsonObject()&&jsonObjRoot.get("district")!=null &&jsonObjRoot.get("street").getAsString()!=""){
        	 String district=jsonObjRoot.get("district").getAsString();
        	 System.out.println(district);
         }
	} 
	
	/**
	 * 用gson去解析数据
	 * @param url网止连接
	 * @throws Exception
	 */
	private static void getDataByGson(String flg) throws Exception {
		//PostMethod method = new PostMethod(url);
		String responseData="";
		if(flg.equals("URL")){
			//北京市的经纬度39.983424,116.322987
			String url=GlobalConstants.getBaiduMapUrl("你的key", "39.983424,116.322987", "json");
			responseData = HttpRequestUtils.HttpURLConnRequest(url, "GET");
		}else if(flg.equals("FILE")){
			String jsonData="ivyy/taobao/com/domain/gson/jsonmap.json";
			String path = JsonMap.class.getClassLoader().getResource(jsonData).getPath();
			responseData=IoUtils.reade
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的蹭蹭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值