Java 的 JSON 开源类库之JackSon工具类--JSONUtils,有需要的朋友可以参考下。
JSON是JavaScriptObjectNotation的缩写,是一种轻量级的数据交换形式,是一种XML的替代方案,而且比XML更小,更快而且更易于解析。因为JSON描述对象的时候使用的是JavaScript语法,它是语言和平台独立的,并且这些年许多JSON的解析器和类库被开发出来。在这篇文章中,我们将会展示7种JavaJSON类库。基本上,我们将会试着把Java对象转换JSON格式并且存储到文件,并且反向操作,读JSON文件转换成一个对象。为了让文章更有意义,我们将会测量每一种JSON类库在不同情况下的处理速度。
Jackson库是一个“旨在为开发者提供更快,更正确,更轻量级,更符合人性思维”的类库。Jackson为处理JSON格式提供了三种模型的处理方法。
1、流式API或者增量解析/产生(incrementalparsing/generation):读写JSON内容被作为离散的事件。
2、树模型:提供一个可变内存树表示JSON文档。
3、数据绑定(Databinding):实现JSON与POJO(简单的Java对象(PlainOldJavaObject))的转换
我们感兴趣的是Java对象与JSON的转换,因此,我们将集中于第三种处理方法。首先我们需要下载Jackson。Jackson的核心功能使用三个类 库,分别是
jackson-core-2.3.1,jackson-databind-2.3.1和jackson-annotations- 2.3.1;三个类库的下载都来自于Maven仓库,给出地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/
JackSon解析JSON数据的工具类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
public
class
JSONUtils {
private
final
static
ObjectMapper objectMapper =
new
ObjectMapper();
private
JSONUtils() {
}
public
static
ObjectMapper getInstance() {
return
objectMapper;
}
/**
* javaBean,list,array convert to json string
*/
public
static
String obj2json(Object obj)
throws
Exception {
return
objectMapper.writeValueAsString(obj);
}
/**
* json string convert to javaBean
*/
public
static
<T> T json2pojo(String jsonStr, Class<T> clazz)
throws
Exception {
return
objectMapper.readValue(jsonStr, clazz);
}
/**
* json string convert to map
*/
public
static
<T> Map<String, Object> json2map(String jsonStr)
throws
Exception {
return
objectMapper.readValue(jsonStr, Map.
class
);
}
/**
* json string convert to map with javaBean
*/
public
static
<T> Map<String, T> json2map(String jsonStr, Class<T> clazz)
throws
Exception {
Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr,
new
TypeReference<Map<String, T>>() {
});
Map<String, T> result =
new
HashMap<String, T>();
for
(Entry<String, Map<String, Object>> entry : map.entrySet()) {
result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
}
return
result;
}
/**
* json array string convert to list with javaBean
*/
public
static
<T> List<T> json2list(String jsonArrayStr, Class<T> clazz)
throws
Exception {
List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr,
new
TypeReference<List<T>>() {
});
List<T> result =
new
ArrayList<T>();
for
(Map<String, Object> map : list) {
result.add(map2pojo(map, clazz));
}
return
result;
}
/**
* map convert to javaBean
*/
public
static
<T> T map2pojo(Map map, Class<T> clazz) {
return
objectMapper.convertValue(map, clazz);
}
}
|
转自:http://www.aichengxu.com/view/40515
本文转自 兴趣e族 51CTO博客,原文链接:http://blog.51cto.com/simplelife/1828070