JSON

利用gson解析和生成json数据(一)

字号+ 作者:H5之家 来源:H5之家 2015-11-23 16:14 我要评论( )

在android开发中经常需要操作json数据,利用谷歌提供的gson开源工具,可以很方便的解析和生成json数据 1.添加gson-1.6.jar到工程中。 2.添加接下来解析以及用来

在android开发中经常需要操作json数据,利用谷歌提供的gson开源工具,可以很方便的解析和生成json数据

1.添加gson-1.6.jar到工程中。

2.添加接下来解析以及用来生成json数据对应的实体类,实体类在这里就不一一贴出来了,最后会给出源码下载的连接的。

源码下载:

将student对象转换成json字符串

Student student = new Student(2,"zhangsan","1232","222222",22); String studentGson = new Gson().toJson(student); System.out.println(studentGson); System.out.println("----------------------------------------------");


将json字符串转换成student对象
String json = "{\"id\":2,\"name\":\"zhangsan\",\"pass\":\"1232\",\"phone\":\"222222\",\"age\":22}"; Student student2 = new Gson().fromJson(json, Student.class); System.out.println(student2.toString());


读取json字符串中的值 String json2 = "[{\"name\":\"haha\",\"age\":30},{\"secondname\":\"test\",\"age\":33}]"; JsonReader reader = new JsonReader(new StringReader(json2)); reader.beginArray(); while (reader.hasNext()) { reader.beginObject(); while (reader.hasNext()) { String name = reader.nextName(); String value = reader.nextString(); System.out.println("name:="+name+"---"+"value="+value); } reader.endObject(); } reader.endArray();
一个json对象里边嵌套另一个json对象 String json3 = "{\"name\":\"fine\",\"age\":55,\"male\":true,\"address\":{\"street\":\"fourth\",\"city\":\"huizhou\",\"country\":\"china\"}}"; Person person = new Gson().fromJson(json3,Person.class); System.out.println(person);
将list转换成json数组 List<Person>list = new ArrayList<Person>(); Person p1 = new Person("张三",55,false,new Address("once","惠州","广东")); Person p2 = new Person("wang三",55,false,new Address("fotr","噶ung州","广速度")); Person p3 = new Person("张里",51,false,new Address("sedf","额州","梵蒂冈东")); Person p4 = new Person("马甲的",44,false,new Address("asdfr","请州","广东")); list.add(p1); list.add(p2); list.add(p3); list.add(p4); Type typeList = new TypeToken<List<Person>>() {}.getType(); Gson gson = new Gson();<pre name="code" class="java"><span style="white-space:pre"> </span>Gson gson = new Gson(); //<span style="white-space:pre"> </span>String jsonStr = gson.toJson(list, typeList); //<span style="white-space:pre"> </span>System.out.println(jsonStr);

/*** 采用gson库解析json数组* 将json数组解析成list* 一个json数组里边包含了(一个对象嵌套另一个对象)的解析*/

String s = "[{\"name\":\"张里\",\"age\":51,\"male\":false,\"address\":{\"street\":\"sedf\",\"city\":\"额州\",\"country\":\"梵蒂冈东\"}},{\"name\":\"马甲的\",\"age\":44,\"male\":false,\"address\":{\"street\":\"asdfr\",\"city\":\"请州\",\"country\":\"广东\"}}]"; Type typeList2 = new TypeToken<List<Person>>() {}.getType(); Gson gson2 = new Gson(); List<Person>list2 = gson2.fromJson(s,typeList2); System.out.println(list2.size()); for (Person person : list2) { System.out.println(person); }普通字段的map转换成json字符串
Map<String,String>map = new HashMap<String, String>(); map.put("name","firstname"); map.put("pass","123"); map.put("age",""+34); Gson gson5 = new Gson(); String jsonStr = gson5.toJson(map); System.out.println(jsonStr); 将map里存放的对象类型的所有数据转换成json Map<String,Person>map2 = new HashMap<String, Person>(); Person p1 = new Person("张三",55,false,new Address("once","惠州","广东")); Person p2 = new Person("wang三",55,false,new Address("fotr","噶ung州","广速度")); map2.put("one",p1); map2.put("two",p2); Gson gson6 = new Gson(); String jsonStr2 = gson6.toJson(map2); System.out.println(jsonStr2); 复杂嵌套的list转换成json数组 List<Address>list1 = new ArrayList<Address>(); list1.add(new Address("once","广东","中国")); list1.add(new Address("once","广东","中国")); UserInfo info1 = new UserInfo(11,"张三","10231",list1); <span style="white-space:pre"> </span> List<Address>list2 = new ArrayList<Address>(); list2.add(new Address("two","山西","中国")); list2.add(new Address("two","山西","中国")); UserInfo info2 = new UserInfo(22,"网五","10231",list2); <span style="white-space:pre"> </span> List<UserInfo>list3 = new ArrayList<UserInfo>(); list3.add(info1); list3.add(info2); Gson gson6 = new Gson(); Type userListType = new TypeToken<List<UserInfo>>() {}.getType(); String jsonStr = gson6.toJson(list3, userListType); System.out.println(jsonStr);

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

  • Android中JSON数据格式读取解析创建视频教程

    Android中JSON数据格式读取解析创建视频教程

    2016-02-05 19:00

网友点评