【第12篇】通过GSON的WriterReader与JsonReader去处理json数据
2015-01-18 21:16
162 查看
package ivyy.taobao.com.domain.gson; import ivyy.taobao.com.entity.Address; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; 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.reflect.TypeToken; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; /** *@Date:2015-1-5 *@Author:liangjilong *@Email:jilongliang@sina.com *@Version:1.0 *@Description: */ @SuppressWarnings("all") public class GsonWriterReader { private static Gson gson = new Gson(); public static void main(String[] args) throws Exception { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); Map map1 = new HashMap(); map1.put("country", "中国"); map1.put("province", "广东省"); map1.put("city", "云浮市"); map1.put("district", "云城区闻莺路东升布艺"); map1.put("street", "闻莺路"); Map map2 = new HashMap(); map2.put("country", "中国"); map2.put("province", "广东省"); map2.put("city", "广州市"); map2.put("district", "越秀区"); map2.put("street", "五羊新邨"); list.add(map1); list.add(map2); String[] str = new String[2]; str[0]="中国"; str[1]="美国"; Address add = new Address(1, "中国"); List<Map> mapList = printlnJsonInfo(list, map1, str, add); /**写*/ File file = writerJsonToFile(gson, mapList); /***读*/ readJsonFromFile(gson, file); } /** * 打印Json信息 * @param list * @param map1 * @param str * @param add * @return */ private static List<Map> printlnJsonInfo(List<Map<String, String>> list, Map map1,String[] str, Address add) { String listsJson = gson.toJson(list);// 集合转json String mapJson = gson.toJson(map1);// map转json String arrayJson = gson.toJson(str);// 数组转json String ObjJson = gson.toJson(add);// 对象转json System.out.println("->********************Object to JSON********************->"); System.out.println("list -> 转Json: " + listsJson); System.out.println("Map对象 -> 转Json: " + mapJson); System.out.println("String数组 -> 转Json: " + arrayJson); System.out.println("Object -> 转Json: " + ObjJson); System.out.println("->********************JSON to Object ********************->"); List<Address> listUser = new ArrayList<Address>(); //从str遍历添加了多个对象 for (int i = 0; i<str.length; i++) { listUser.add(new Address(i,str[i])); } String listJson = gson.toJson(listUser); System.out.println("Json-> 转泛型集合: " + listJson); List<Address> listAdd = gson.fromJson(listJson,new TypeToken<List<Address>>() {}.getType()); for (Address addr : listAdd) { System.out.println("国家:" + addr.getCountry()); } System.out.println("Json -> 转泛型集合List<Map<String,String>>: " + listsJson); List<Map> mapList = gson.fromJson(listsJson,new TypeToken<List<Map<String, String>>>() {}.getType()); for (Map map : mapList) { System.out.println("地区:" + map.get("street")); } System.out.println("Json -> 转Oject: " + listsJson); Address ad = gson.fromJson(ObjJson, Address.class); System.out.println("国家:"+ad.getCountry()); return mapList; } /** * JsonWriter * 把Json数据写入文件里面 * @param gson * @param mapList * @return * @throws Exception */ private static File writerJsonToFile(Gson gson, List<Map> mapList)throws Exception { File file = new File("gson");// 把json保存项目根目录下无后缀格式的文本 OutputStream out = new FileOutputStream(file); JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));//设置编码 gson.toJson(mapList, new TypeToken<List<Map<String, String>>>() {}.getType(), writer);//把值写进去 writer.flush(); writer.close(); return file; } /** * JsonReader * 读取从本地文件的Json数据 * @param gson * @param file * @throws Exception */ private static void readJsonFromFile(Gson gson, File file)throws Exception { InputStream input = new FileInputStream(file); JsonReader reader = new JsonReader(new InputStreamReader(input)); List<Map> content = gson.fromJson(reader,new TypeToken<List<Map<String, String>>>() {}.getType()); //List<Map> content = gson.fromJson(new InputStreamReader(input),new TypeToken<List<Map<String, String>>>() {}.getType()); for (Map map : content) { System.out.println("地区:" + map.get("street")); } reader.close(); } }
package ivyy.taobao.com.entity; import java.io.Serializable; import com.google.gson.annotations.Expose; /** * Gson gson=new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); * 创建Gson对象,没有@Expose注释的属性将不会被序列化 * serialize序列化 默认 true * deserialize反序列化 默认 true * @author liangjilong * @Email:jilongliang@sina.com */ public class Address implements Serializable{ @Expose(serialize=false)// 序列化 /Address类已经序列化 private int id; @Expose(deserialize=false)// 反序列化 private String country;//国家 private String province;//省份 private String city;//城市 private String street;//街道 private String district;//地区 private String cityCode;//邮政编码 private String streetNumber;//街道号 private String weibo;//微博 public Address() { } public Address(int id,String country) { this.id=id; this.country=country; } public String getCityCode() { return cityCode; } public void setCityCode(String cityCode) { this.cityCode = cityCode; } public String getStreetNumber() { return streetNumber; } public void setStreetNumber(String streetNumber) { this.streetNumber = streetNumber; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getDistrict() { return district; } public void setDistrict(String district) { this.district = district; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getWeibo() { return weibo; } public void setWeibo(String weibo) { this.weibo = weibo; } }
相关文章推荐
- 【第11篇】通过GSON的TreeReader与JsonReader去处理json数据
- 【第21篇】通过Gson去把字符串转成json,对象转成Json,数组转换成Json处理Json数据
- 【第14篇】通过GSON的JsonReader去读取数据处理json数据
- Android用GSon处理Json数据
- Android用GSon处理Json数据
- Gson对Json数据的处理
- 在struts2下使用ajax,并通过json处理回传数据
- Android用GSon处理Json数据
- 灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
- 【第13篇】通过GSON的JsonParser去读取数据处理json数据
- 【第28篇】通过Gson和FastJson格式化Json数据
- Android用GSon处理Json数据
- Android用GSon处理Json数据
- 【第23篇】用Map组装Json通过JackJson处理解析json数据
- 灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
- 【第17篇】通过fastjson去操作对象数据并处理json数据
- Android用GSon处理Json数据
- json通过一般处理程序向jquery传数据的总结(基于ligerui)
- json 的解析-使用Android中的JSONObject和JSONArray解析json数据,gson中的JsonReader解析json数据
- Ajax 如何通过url 传递Json 数据或者数组 给PHP进行处理