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
【第21篇】通过Gson去把字符串转成json,对象转成Json,数组转换成Json处理Json数据
最新推荐文章于 2023-08-24 19:50:12 发布
本文介绍了如何使用Gson库将字符串、对象和数组转换为Json格式,以及如何解析Json数据。示例包括将Address对象转为Json,将Json字符串反序列化为对象,以及将数组转换成Json。同时展示了从Json数据中提取信息的方法。
摘要由CSDN通过智能技术生成