JSON全称为:JavaScript Object Notation(JavaScript 对象表示法) 是存储和交换文本信息的语法。类似 XML。JSON 的特点为:比 XML 更小、更快,更易解析。由于JSON字符串的特点导致在开发过程中JSON被广泛的应用
下面我们将使用java语言对JSON的产生和解析进行讲解
在Java开发中常用的经典的开发JSON第三方支持工具为Google所提供的Gson,但是此种方法有许多的不足之处。目前在企业中对json进行解析除了使用Gson之外还用到由阿里巴巴公司所提供的FastJson,关于FastJson的使用我们将在下次文章中讲解。本次的主要内容为Java中Gson的使用
在Java开发中要想使用Gson必须向工程中导入Gson的jar文件。
Gson.jar的下载地址:http://pan.baidu.com/s/1o7MyE3S
json的生成方法
使用Gson生成JSON(将对象转换成json字符串)一般使用在发送数据的一方
/**
* json字符串的生成方法
* @param value
* @return
*/
public static String createJsonString(Object value) {
Gson gson = new Gson();
String str = gson.toJson(value);
return str;
}
json字符串的解析方法
从json中解析单个对象
public static <T> T getObject(String jsonString, Class<T> cls) {
T t = null;
try {
Gson gson = new Gson();
t = gson.fromJson(jsonString, cls);
} catch (Exception e) {
// TODO: handle exception
}
return t;
}
从json中解析List集合
public static <T> List<T> getObjects(String jsonString, Class<T> cls) {
List<T> result = new ArrayList<T>();
try {
Gson gson = new Gson();
//将json字符串中内容分解成多个对象
List<T> list = gson.fromJson(jsonString, new TypeToken<List<T>>() {
}.getType());
//循环上述集合中的内容
for(int i = 0;i<list.size();i++) {
//将集合中的每个对象重新转换成json字符串并转换成对象
//此操作为了避免CCE(类型转换异常)
String json = gson.toJson(list.get(i));
T fromJson = gson.fromJson(json, cls);
result.add(fromJson);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
将json字符串转换成map集合(通用解析)、
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) {
// TODO: handle exception
}
return list;
}