fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
主要特点:
快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
零依赖(没有依赖其它任何类库除了JDK)

在maven中实用fastjson
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.5</version> </dependency>
项目地址
https://github.com/alibaba/fastjson
获取各个版本
http://repo1.maven.org/maven2/com/alibaba/fastjson/
Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
// 把JSON文本parse为JSONObject或者JSONArray public static final Object parse(String text); // 把JSON文本parse成JSONObject public static final JSONObject parseObject(String text); // 把JSON文本parse为JavaBean public static final T parseObject(String text, Class clazz); // 把JSON文本parse成JSONArray public static final JSONArray parseArray(String text); //把JSON文本parse成JavaBean集合 public static final List parseArray(String text, Class clazz); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object); // 将JavaBean序列化为带格式的JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean转换为JSONObject或者JSONArray public static final Object toJSON(Object javaObject);
例如http://www.javacui.com/Theory/417.html 里面,用JSON将一个对象输出为JSON字符串。
和List与对象之间操作
public static void json2List() {
// List -> JSON array
List<Bar> barList = new ArrayList<Bar>();
barList.add(new Bar("1",1,new Date()));
barList.add(new Bar("2",2,new Date()));
barList.add(new Bar("3",3,new Date()));
String json = JSON.toJSONString(barList, true);
System.out.println(json);
// JSON array -> List
List<Bar> barList1 = JSON.parseArray(json, Bar.class);
for (Bar bar : barList1) {
System.out.println(bar.toString());
}
}打印
[
{
"barAge":1,
"barDate":1449489485307,
"barName":"1"
},
{
"barAge":2,
"barDate":1449489485307,
"barName":"2"
},
{
"barAge":3,
"barDate":1449489485307,
"barName":"3"
}
]
[barName:1,barAge:1,barDate:Mon Dec 07 19:58:05 CST 2015]
[barName:2,barAge:2,barDate:Mon Dec 07 19:58:05 CST 2015]
[barName:3,barAge:3,barDate:Mon Dec 07 19:58:05 CST 2015]注意看,我们的对象打印时,打印出来的不是内存地址。
和Map与对象之间的操作
public static void json2Map() {
// Map -> JSON
Map<String, Bar> map = new HashMap<String, Bar>();
map.put("a", new Bar("1",1,new Date()));
map.put("b", new Bar("2",2,new Date()));
map.put("c", new Bar("3",3,new Date()));
String json = JSON.toJSONString(map, true);
System.out.println(json);
// JSON -> Map
Map<String, Bar> map1 = (Map<String, Bar>) JSON.parse(json);
for (String key : map1.keySet()) {
System.out.println(key + ":" + map1.get(key));
}
}打印
{
"b":{
"barAge":2,
"barDate":1449489656635,
"barName":"2"
},
"c":{
"barAge":3,
"barDate":1449489656635,
"barName":"3"
},
"a":{
"barAge":1,
"barDate":1449489656635,
"barName":"1"
}
}
b:{"barName":"2","barAge":2,"barDate":1449489656635}
c:{"barName":"3","barAge":3,"barDate":1449489656635}
a:{"barName":"1","barAge":1,"barDate":1449489656635}基于http://www.javacui.com/Theory/413.html ,其他的自行研究。
实体对象代码
import java.lang.reflect.Field;
import java.util.Date;
@SuppressWarnings("all")
public class Bar {
private String barName;
private int barAge;
private Date barDate;
public Bar(){}
public Bar(String barName,int barAge,Date barDate){
this.barName=barName;
this.barAge=barAge;
this.barDate=barDate;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("[");
Field[] fields = getClass().getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
sb.append(field.getName()).append(":").append(field.get(this)).append(",");
} catch (Exception e) {
e.printStackTrace();
}
}
// 去掉多于的逗号
if(sb.length() > 1){
sb.deleteCharAt(sb.length()-1);
}
sb.append("]");
return sb.toString();
}
}本文结束。
刚后台看了一下,本文为本站第401篇博文。
再放一段Array和Map的示例代码:
public static void array2JSON() {
String[] arr_String = { "a", "b", "c" };
String json_arr_String = JSON.toJSONString(arr_String, true);
System.out.println(json_arr_String);
JSONArray jsonArray = JSON.parseArray(json_arr_String);
for (Object o : jsonArray) {
System.out.println(o);
}
System.out.println(jsonArray);
}
public static void array2JSON2() {
Bar[] arr_Bar = { new Bar(), new Bar(), new Bar() };
String json_arr_Bar = JSON.toJSONString(arr_Bar, true);
System.out.println(json_arr_Bar);
JSONArray jsonArray = JSON.parseArray(json_arr_Bar);
for (Object o : jsonArray) {
System.out.println(o);
}
System.out.println(jsonArray);
}
public static void map2JSON() {
Map map = new HashMap();
map.put("a", "aaa");
map.put("b", "bbb");
map.put("c", "ccc");
String json = JSON.toJSONString(map);
System.out.println(json);
Map map1 = JSON.parseObject(json);
for (Object o : map.entrySet()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) o;
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}