Android 解析Json 和Json数组 以及Gson的简单应用
来源:互联网 发布:雨课堂教学软件 编辑:程序博客网 时间:2024/04/29 01:59
Gson jar 下载地址 :http://download.csdn.net/download/u010637692/8348917
下载后 build一下就行了
惨考 http://www.open-open.com/solution/view/1319448346593
JSON即JavaScript Object Natation, 它是一种轻量级的数据交换格式, 与XML一样, 是广泛被采用的客户端和服务端交互的解决方案.
JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔. 如:{"name":"coolxing", "age"=24, "male":true, "address":{"street":"huiLongGuan", "city":"beijing", "country":"china"}}. JSON对象的key只能是string类型的, 而value可以是string, number, false, true, null, Object对象甚至是array数组, 也就是说可以存在嵌套的情况.
JSON数组: JSON数组(array)以"["开始, 以"]"结束, 数组中的每一个元素可以是string, number, false, true, null, Object对象甚至是array数组, 数组间的元素使用逗号分隔. 如["coolxing", 24, {"street":"huiLongGuan", "city":"beijing", "country":"china"}].
JSON数据的解析:解析JSON数据, 首先需要明确待解析的是JSON Object还是JSON array, 然后需要确定采用哪种解析技术. android平台上一般有2种解析技术可供选择: android内置的org.json包和google的开源gson库. 以下将分别采用这两种技术解析JSON对象和JSON数组.
1. 采用android内置的org.json包解析JSON对象. 假设待解析的JSON数据为json = "{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}", 其中\用于转义表达式中的双引号. 首先定义2个JavaBean:
先声明两个javabean
package com.yinggujing;/** * Created by ChenHe on 2016/6/2. */public class Address { private String street; private String city; private String country; public Address() { super(); } public Address(String street, String city, String country) { super(); this.street = street; this.city = city; this.country = country; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "Address [street=" + street + ", city=" + city + ", country=" + country + "]"; }}
package com.yinggujing;/** * Created by ChenHe on 2016/6/2. */public class Person { private String name; private int age; private boolean male; private Address address; public Person() { super(); } public Person(String name, int age, boolean male, Address address) { super(); this.name = name; this.age = age; this.male = male; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isMale() { return male; } public void setMale(boolean male) { this.male = male; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", male=" + male + ", address=" + address + "]"; }}
java代码
package com.yinggujing;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import com.yinggujing.FragListBean.ChildWarningArcherListBean;import java.lang.reflect.Type;import java.util.List;/** * Created by ChenHe on 2016/6/2. */public class GsonText extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //数据源 一一对应的 分别对应两种方式 json和Gson解析 String json = "[{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}, {\"name\":\"min\", \"age\"=20, \"male\":false, \"address\":{\"street\":\"heiShiJiao\", \"city\":\"daLian\", \"country\":\"china\"}}]"; String json1 = "{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}"; String json2 = "[{\"name\":\"coolxing\", \"age\"=24, \"male\":true, \"address\":{\"street\":\"huiLongGuan\", \"city\":\"beijing\", \"country\":\"china\"}}, {\"name\":\"min\", \"age\"=20, \"male\":false, \"address\":{\"street\":\"heiShiJiao\", \"city\":\"daLian\", \"country\":\"china\"}}]";// try {// List<Person> persons = new ArrayList<Person>();// JSONArray jsonArray = new JSONArray(json);// for(int i = 0; i < jsonArray.length(); i++)// {// JSONObject jsonObject = jsonArray.getJSONObject(i);// String name = jsonObject.getString("name");// int age = jsonObject.getInt("age");// boolean male = jsonObject.getBoolean("male");// JSONObject addressJSON = jsonObject.getJSONObject("address");// String street = addressJSON.getString("street");// String city = addressJSON.getString("city");// String country = addressJSON.getString("country");// Address address = new Address(street, city, country);// Person person = new Person(name, age, male, address);// persons.add(person);// }// System.out.println(persons);// } catch (JSONException e) {// e.printStackTrace();// }// Gson gson = new Gson();// Person person = gson.fromJson(json1, Person.class);// System.out.println(person);// try {// List<Person> persons = new ArrayList<Person>();// JSONArray jsonArray = new JSONArray(json2);// for(int i = 0; i < jsonArray.length(); i++) {// JSONObject jsonObject = jsonArray.getJSONObject(i);// String name = jsonObject.getString("name");// int age = jsonObject.getInt("age");// boolean male = jsonObject.getBoolean("male");// JSONObject addressJSON = jsonObject.getJSONObject("address");// String street = addressJSON.getString("street");// String city = addressJSON.getString("city");// String country = addressJSON.getString("country");// Address address = new Address(street, city, country);// Person person = new Person(name, age, male, address);// persons.add(person);// }// System.out.println(persons);// } catch (JSONException e) {// e.printStackTrace();// } Gson gson = new Gson(); Type listType = new TypeToken<List<ChildWarningArcherListBean>>(){}.getType(); List<ChildWarningArcherListBean> persons = gson.fromJson(json2, listType); System.out.println(persons); }}
- Android 解析Json 和Json数组 以及Gson的简单应用
- Gson解析简单json以及复杂的json数据
- json原生解析以及Gson解析数组
- Android JSON数据格式的解析,与简单对象、带泛型的List和Map的转换,以及GSON的使用
- Gson解析json数组
- Gson解析json数组
- gson解析json数组
- Gson解析json数组
- Gson解析Json数组
- gson解析json数组
- Gson应用《Json解析》
- android开发之 Gson 解析json数组
- Android JSON Gson 解析
- Android Gson解析Json
- Android Gson 解析 Json
- Android json解析--GSON
- PHP解析Gson生成的Json数组
- GSON解析复杂的JSON数组
- MySql学习
- Gluster源代码阅读3--MGMT Xlator
- Android Low 体系介绍
- Redis与Memcached的区别
- linux设备驱动归纳总结(二):模块的相关基础概念
- Android 解析Json 和Json数组 以及Gson的简单应用
- 登录窗口
- Android Service与Activity之间通信的几种方式
- jQuery中的DOM操作学习笔记
- APK安装调用
- input file上传图片预览(查看图片大小,类型,名字)------------------------------自己动手写jQuery插件
- js用 window.location.href跳转IE和chrome中路径url不一致问题
- GENYMOTION问题之an error occurred while deploying a file install_failed_no_machine_abis
- 数据结构之线性表