1、Json:JavaScript Object Notation
2、Json数据是一系列的键值对集合,相对XML体积小
3、Json相对于XML解析方便一些,与JavaScript交互方便
4、描述性相对XML较差
Json格式例子:
[{"name":"zhangsan","age":20},{"name":"lisi","age":21}]
Json介绍:http://baike.baidu.com/view/136475.htm
Json官网:http://www.json.org/
解析方法:
1、使用Android官方API :JsonReader (Added in API level 11)
http://developer.android.com/reference/android/util/JsonReader.html
2、使用Google的Json解析插件:Gson (推荐)
http://code.google.com/p/google-gson/
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
a、使用JsonReader解析,类似Android官方API
b、使用Gson的API直接转对象或对象的列表
Gson使用例子代码:
Json解析工具类:
package com.wyy.json.util;
import java.lang.reflect.Type;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
/*****************************************************************
*@ProjectName AboutJson
*@FileName JsonUtil.java
*@Author WYY
*@Date 2013-6-14
*@Copyright 2012-2022 wyyft@163.com All rights reserved.
*
*****************************************************************/
/**
* @Author WYY
* @Description
*/
public class JsonUtil
{
private static JsonUtil instance;
private Gson gson = new Gson();
/**
* @Description 获取JsonUtil的单例对象
* @modified by WYY 2013-6-14
* @return
*/
public static JsonUtil newInstance()
{
if (instance == null)
{
instance = new JsonUtil();
}
return instance;
}
/**
* 解析单个对象
*
* @Description
* @modified by WYY 2013-6-14
* @param jsonData
* @return
*/
public Person parsePerson(String jsonData)
{
Person person = gson.fromJson(jsonData, Person.class);
return person;
}
/**
* @Description 解析多个对象组成的数组
* @modified by WYY 2013-6-14
* @param jsonData
* @return
*/
public List<Person> parsePersons(String jsonData)
{
Type type = new TypeToken<List<Person>>()
{
}.getType();
List<Person> ps = gson.fromJson(jsonData, type);
return ps;
}
}
实体类Person:
/*****************************************************************
*@ProjectName AboutJson
*@FileName Person.java
*@Author WYY
*@Date 2013-6-14
*@Copyright 2012-2022 wyyft@163.com All rights reserved.
*
*****************************************************************/
package com.wyy.json.util;
/**
* @Author WYY
* @Description
*/
public class Person
{
private String name;
private int age;
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;
}
@Override
public String toString()
{
return "Person [name=" + name + ", age=" + age + "]";
}
}
测试数据:
/*****************************************************************
*@ProjectName AboutJson
*@FileName JsonData.java
*@Author WYY
*@Date 2013-6-14
*@Copyright 2012-2022 wyyft@163.com All rights reserved.
*
*****************************************************************/
package com.wyy.json.util;
/**
* @Author WYY
* @Description
*/
public class JsonData
{
//测试数据
static String jsonString1="{\"name\":\"zhangsan\",\"age\":20}";
static String jsonString2="[{\"name\":\"zhangsan\",\"age\":20},{\"name\":\"lisi\",\"age\":21}]";
}
测试类:
/*****************************************************************
*@ProjectName AboutJson
*@FileName Tester.java
*@Author WYY
*@Date 2013-6-14
*@Copyright 2012-2022 wyyft@163.com All rights reserved.
*
*****************************************************************/
package com.wyy.json.util;
import java.util.List;
/**
* @Author WYY
* @Description
*/
public class Tester
{
public static void main(String[] args)
{
JsonUtil jsonUtil =JsonUtil.newInstance();
Person person =jsonUtil.parsePerson(JsonData.jsonString1);
System.out.println(person);
List<Person> psList = jsonUtil.parsePersons(JsonData.jsonString2);
System.out.println(psList);
}
}