JSON格式数据解析及GSON框架的使用详解
2017-05-14 22:32
876 查看
JSON
优缺点
优点:比起XML,JSON优势在于它的体积更小,在网络传输中可以更省流量。缺点:语义性较差,不如XML直观。
JSONObject
JSON对象格式:{"id":1,"name":"Java"}
一个{}里面的内容表示一个JSON对象。
一个”key”:value,表示一个键值。
String型的value要用”“修饰。
也可以:
{"book":{"id":1,"name":"Java"}}
表示key对于的value是JSON对象。
JSONArray
JSON数组格式:[ {"id":1,"name":"Java"}, {"id":2,"name":"xml"}, {"id":3,"name":"Android"} ]
一个[]里面的内容表示一个JSON数组,包含多个JSONObject。
也可以:
{"book":[ {"id":1,"name":"Java"}, {"id":2,"name":"xml"}, {"id":3,"name":"Android"} ]}
表示key对于的value是JSON数组。
使用JSONObject解析
解析JSONObject
private void parseJSonObject(String json) { try { JSONObject object = new JSONObject(json);//转换为JSON对象 int id = object.getInt("id"); String name = object.getString("name"); System.out.println(id + ":" + name); } catch (JSONException e) { e.printStackTrace(); } }
解析JSONArray
private void parseJson(String json) { try { JSONArray array = new JSONArray(json);//转换为JSON数组 for (int i = 0; i < array.length(); i++) { JSONObject object = array.getJSONObject(i);//获取JSON对象 int id = object.getInt("id");//根据类型获取对应的值 String name = object.getString("name"); System.out.println(id + ":" + name); } } catch (JSONException e) { e.printStackTrace(); } }
使用GSON解析
添加依赖
dependencies { ... compile 'com.google.code.gson:gson:2.7' ... }
定义对应的数据类
定义一个数据类,要求与JSON数据中的值一一对应。如下:public class Book { int id; String name; public Book(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
解析JSONObject
private void parseGsonObject(String json1) { Gson gson = new Gson();//创建Gson对象 Book book = gson.fromJson(json1, Book.class);//转为数据类型 System.out.println(book.getId() + ":" + book.getName()); }
解析JSONArray
如果是JSON数组,会比较麻烦没需要借助TypeToken将期望的数据类型传入到fromJson()中。private void parseGsonArray(String json2) { Gson gson = new Gson(); List<Book> booklist = gson.fromJson(json2, new TypeToken<List<Book>>() { }.getType()); for (Book book : booklist) { System.out.println(book.getId() + ":" + book.getName()); } }
List转为JSON格式数据
List数据也是一个key对应一个value,因此也可以使用Gson对象的toJson()方法将List数据转为String类型,进而转换为JSON对象。Gson gson = new Gson(); String json = gson.toJson(booklist);//上面方法得到的list System.out.println(json);
结语
除官方的JSONObject,与谷歌的开源GSON,一些第三方Jackson,FastJSON(阿里开源的)等也很不错。其中如果JSON格式的数据形式比较统一,则使用GSON比较方便;如果数据形式不统一,则使用JSONObject比较好。
相关文章推荐
- 第一行代码总结:10网络:10.4解析JSON格式数据10.4.2使用GSON
- GSON框架解析json数据简单使用
- android学习---使用GSON解析JSON格式数据
- android studio添加Gson,并使用Gson生成和解析json格式数据
- 灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
- 以淘宝详情页面Json为例使用Gson的JsonReader解析复杂Json数据详解
- 灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
- 灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
- Android Studio配置与使用GSON框架解析json数据
- Android JSON数据格式的解析,与简单对象、带泛型的List和Map的转换,以及GSON的使用
- JSON数据的格式和解析(使用GSON)入门
- 使用google的GSON解析json格式的数据
- 【Android开发经验】超好用的json解析工具——Gson项目使用详解
- 很好用的Google 开源项目Gson在java中解析和创建json格式的数据
- Android下使用Gson解析JSON数据
- 使用Python解析豆瓣上Json格式数据
- C++ Builder 使用 JsonCpp 解析json格式数据方法( 支持 UNICODE (UTF-16) / UTF-8 )
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- 使用GSON 解析JSON 数据
- 解析PHP 使用curl提交json格式数据