【第13篇】通过GSON的JsonParser去读取数据处理json数据
发布时间:2020-12-14 02:49:49 所属栏目:大数据 来源:网络整理
导读:package ivyy.taobao.com.domain.gson; import ivyy.taobao.com.entity.Address;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import net.sf.json.JSONArray;import com.google.gson.Gson;import com.google.gson.JsonArray
package ivyy.taobao.com.domain.gson; import ivyy.taobao.com.entity.Address; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; 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; /** *@DEMO:napp *@Author:jilongliang *@Date:2013-7-20 */ public class JsonParse { private static Gson gson=new Gson(); /** * 通过JsonLib把数组转换成Json数据 * @param url * @throws Exception */ private static JSONArray getArrayToJsonByJsonLib()throws Exception { JSONArray jsonArr=null; List<Address> lists=new ArrayList<Address>(); for (int i = 1; i <=12; i++) { Address addr = new Address(); addr.setProvince("第"+i+"个省份"); addr.setCity("第"+i+"个城市"); addr.setCityCode("130"+i); addr.setStreet("街道"+i); addr.setStreetNumber("街道号码"+i); lists.add(addr); } jsonArr = JSONArray.fromObject(lists); //把对象转换成Json对象 return jsonArr; } public static void main(String[] args)throws Exception{ getJsonGson(); } /** * 利用Json-lib封装数组Json数据,Gson解析Json数据. * @throws Exception */ private static void getJsonGson() throws Exception { //Json-lib的JSONArray数组对象 JSONArray JsonArray =getArrayToJsonByJsonLib(); String jsonData=JsonArray.toString(); /* * 自己组装成一个json格式,格式必须为{,}才能为JsonElement对象的parse方法解析不是否则 * 会报错com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 1 column 1307 */ String json="{status:1,address:"+jsonData+"}"; // 创建一个JsonParser JsonParser parser = new JsonParser(); JsonElement jsonEl = parser.parse(json); JsonObject jsonObj = null; jsonObj = jsonEl.getAsJsonObject();//转换成Json对象 String status=jsonObj.get("status").getAsString();//status节点 //System.out.println(status); JsonElement addressEl=jsonObj.get("address");//address节点 if(addressEl.isJsonArray()){//判断是否为Json数组 JsonArray jsonArray= addressEl.getAsJsonArray();//转为数组 for(Iterator iter=jsonArray.iterator();iter.hasNext();){ JsonObject obj=(JsonObject) iter.next(); //String city=obj.get("city").getAsString();//方法一:根据key形势取值 System.out.println(obj); Address add=gson.fromJson(obj,Address.class);//方法二:灵活使用Gson取数据 System.out.println(add.getProvince()+"t"+add.getCity()); } } } } 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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |