手机端小强原创文章,java小强个人博客站点
当前位置: 首页 >> 开源 >> JSON解析推荐之Fastjson

JSON解析推荐之Fastjson

33662 开源 | 2015-12-7

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。

主要特点:

快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)

强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)

零依赖(没有依赖其它任何类库除了JDK)


fastjson入门介绍示例代码


在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();
	}
}


本文结束。

推荐您阅读更多有关于“ json fastjson 阿里巴巴 ”的文章

上一篇:再说TbViewer,服务器上那些恶意软件 下一篇:java对象重写toString打印更直观

猜你喜欢

发表评论:

评论:

回复 java小强 评论于 2015-12-07 20:14
刚后台看了一下,本文为本站第401篇博文。
回复 java小强 评论于 2015-12-07 20:11
再放一段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());
    }
}
个人资料
blogger

java小强
没有思考,人生的路会越走越难!

搜索
分类
最新微语
  • 8月1日,我已离开奋斗多年的北京。不知道是暂时的离开,还是永久的离别,反正已经离职在家,告别每日上班,每天苦累的煎熬,过一段属于自己的生活。以前是专职工作,现在专职生活。

    2017-08-18 12:47

  • 又弄完一个项目,累成狗,但是感觉又进步不少,除了很多坑已经踩过,做起来也是轻车熟路。同时也认识到,程序不在于你多牛逼,而是在乎你的细节把控度,而细节的关注,是一个优秀程序员必须要注意的。另外,要相信自己,勇敢向前,没人生下来就是成功的,而且,成功的路,比成功本身更重要。

    2017-06-30 09:46

  • 今日北京再次沙尘暴来袭,吃了几年细粮,终于能来口粗粮了,不过大早上看见这场景,还是吓我一跳,不过随后就平静了,毕竟是老朋友了。进公司又发现一股烤糊的味道,真是祸不单行啊,例外都是污染。发了两个口罩,开启保护模式。

    2017-05-04 10:16

  • 今天同学问我,最近还在写代码吗?我想了想,这个问题怎么回答呢,我好像确实很长时间,虽然写了一些,但是主要内容已经不是写代码了。然后再想想,自己也7年多了,这么多年了,我收获了什么,我的目标到底是什么。眼看就奔三了,人生啊,开启感叹模式。

    2017-03-30 22:52

  • 也许大家都已经注意到了,今年的房价,好多地方都是翻了一番,跟着就是,各地房东开始变相涨租。今年之所以搬走,就是为此,这两天同学也是如此。很多房东只认钱,别谈感情,伤钱。而对于这个城市来说,你怎么定位自己,你真把自己当成她的一份子?你来此为何?将来何去何从?自己掂量清楚。

    2016-12-05 10:03

  • 更多»

最新文章
热门文章
随机文章