版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuwan1992/article/details/52830948
首先,这里要先说一下 JSON 的语法。
1、使用 JSON 语法创建对象
如图,创建 object 时,总是以 “{” 开始,以 “}” 结束,对象的每个属性和属性值之间以英文冒号 “:” 隔开,多个属性定义之间以英
文逗号 “,” 隔开。语法格式如下:
object =
{
name1 : value1,
name2 : value2,
...
}
使用 JSON 语法创建 JavaScript 对象是,属性值不仅可以是普通字符串,也可以是任何基本数据类型,还可以是函数、数组,
甚至是另外一个 JSON语法创建的对象。例如:
person =
{
name : 'liuwan',
age : 24,
// 使用 JSON 语法为其指定一个属性
son : {
blog : 'csdn',
git : 'github'
},
// 使用 JSON 语法为其直接分配一个方法
info : function()
{
document.writeln("姓名:" + this.name);
}
}
2、使用 JSON 语法创建数 组
如图,JSON 创建数组总是以英文方括号 “[” 开始,然后依次放入数组元素,元素与元素之间以英文逗号 “,” 隔开,最后以英文反
方括号 “]” 结束。使用 JSON创建数组的语法格式如下:
arr = [value1 , value2 ...]
幸运的是,Android 系统内置了对 JSON 的支持,在 Android SDK 的 org.json 包下提供了JSONObject、JSONArray 等类,通过
这些类可以很方便的完成 JSON 字符串与 JSONObject、JSONArray 之间的互相转换。
JSONObject :代表一个 JSON 对象,它可完成 Java 对象与 JSON 字符串之间的相互转换。
JSONArray :代表一个 JSON 数组,它可完成 Java 集合与 JSON字符串之间的相互转换。
下面是一个Android内置 JSON 解析的 Demo:
public class JsonTools {
public JsonTools() {
}
public static Person getPerson(String key, String jsonString) {
Person person = new Person();
try {
JSONObject jsonObject = new JSONObject(jsonString);
JSONObject personObject = jsonObject.getJSONObject("person");
person.setId(personObject.getInt("id"));
person.setName(personObject.getString("name"));
} catch (Exception e) {
e.printStackTrace();
}
return person;
}
public static List<Person> getPersons(String key, String jsonString) {
List<Person> list = new ArrayList<Person>();
try {
JSONObject jsonObject = new JSONObject(jsonString);
JSONArray jsonArray = jsonObject.getJSONArray(key);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
Person person = new Person();
person.setId(jsonObject2.getInt("id"));
person.setName(jsonObject2.getString("name"));
list.add(person);
}
} catch (Exception e) {
}
return list;
}
public static List<String> getList(String key, String jsonString) {
List<String> list = new ArrayList<String>();
try {
JSONObject jsonObject = new JSONObject(jsonString);
JSONArray jsonArray = jsonObject.getJSONArray(key);
for (int i = 0; i < jsonArray.length(); i++) {
String msg = jsonArray.getString(i);
list.add(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public static List<Map<String, Object>> listKeyMaps(String key, String jsonString) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
JSONObject jsonObject = new JSONObject(jsonString);
JSONArray jsonArray = jsonObject.getJSONArray(key);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
Map<String, Object> map = new HashMap<String, Object>();
Iterator<String> iterator = jsonObject2.keys();
while (iterator.hasNext()) {
String json_key = iterator.next();
Object json_value = jsonObject2.get(json_key);
if (json_value == null) {
json_value = "";
}
map.put(json_key, json_value);
}
list.add(map);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
4、GSON
GSON 是一个 Java 类库,可以把 Java 对象转换成 JSON 数据,也可以把 JSON 字符串转换成 Java 对象,支持任意复杂的
Java 对象,包括没有源代码的对象。
下面是一个利用 GSON 解析 JSON 的 Demo:
public class GsonTools {
public 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) {
e.printStackTrace();
}
return list;
}
public static List<Map<String, Object>> listKeyMaps(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) {
e.printStackTrace();
}
return list;
}
}
最后附上 GSON 的下载地址:
https://github.com/google/gson