一、 谷歌GSON这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。
二、Gson解析Json步骤
A、服务器端将数据转换成json字符串
首先、服务器端项目要导入Gson的jar包到BuiltPath中。(
Gson的jar:http://code.google.com/p/google-gson/ 我们还可以下载gson的帮助文档)
先写一个person对象
- public class Person {
- private int id;
- private String name;
- private String address;
- public Person() {
- // TODO Auto-generated constructor stub
- }
- 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;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public String toString() {
- return "Person [id=" + id + ", name=" + name + ", address=" + address
- + "]";
- }
- public Person(int id, String name, String address) {
- super();
- this.id = id;
- this.name = name;
- this.address = address;
- }
- }
- public class PersonService {
- //一个person对象
- public Person getPerson(){
- Person person=new Person(1001,"hang","suqian");
- return person;
- }
- //一组person对象
- public List<Person> getlistPerson(){
- List<Person> list=new ArrayList<Person>();
- Person person1=new Person(1001,"zhang","suqian");
- Person person2=new Person(2002,"hang","yangzhou");
- list.add(person1);
- list.add(person2);
- return list;
- }
- //字符串数组
- public List<String> getlistString(){
- List<String> list=new ArrayList<String>();
- list.add("beijing");
- list.add("suqian");
- return list;
- }
- //Map对象
- public List<Map<String,Object>> getlistMap(){
- List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
- Map<String,Object> map1=new HashMap<String, Object>();
- map1.put("id", 1001);
- map1.put("name","zhang");
- map1.put("address", "beijing");
- Map<String,Object> map2=new HashMap<String, Object>();
- map2.put("id", 1002);
- map2.put("name","hang");
- map2.put("address", "shanghai");
- list.add(map1);
- list.add(map2);
- return list;
- }
- }
android客户端解析
- package com.example.andorid_json;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import android.widget.EditText;
- public class GsonTools {
- public static <T> T getPerson(String jsonString, Class<T> cls) {
- T t = null;
- try {
- Gson gson = new Gson();
- t = gson.fromJson(jsonString, cls);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return t;
- }
- public static <T> List<T> getPersons(String jsonString, Class<T> cls) {
- List<T> list = new ArrayList<T>();
- try {
- Gson gson = new Gson();
- list = gson.fromJson(jsonString, new TypeToken<List<T>>() {
- }.getType());
- } catch (Exception e) {
- e.printStackTrace();
- }
- return list;
- }
- public static List<String> getList(String jsonString) {
- List<String> list = new ArrayList<String>();
- try {
- Gson gson = new Gson();
- list = gson.fromJson(jsonString, new TypeToken<List<String>>() {
- }.getType());
- } catch (Exception e) {
- // TODO: handle exception
- }
- return list;
- }
- public static List<Map<String,Object>> listKeyMap(String jsonString){
- List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
- try {
- Gson gson = new Gson();
- list = gson.fromJson(jsonString, new TypeToken<List<Map<String,Object>>>() {
- }.getType());
- } catch (Exception e) {
- // TODO: handle exception
- }
- return list;
- }
- }