`

java的json处理器-fastjson

    博客分类:
  • java
阅读更多

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

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.5</version>
</dependency>

主要特点:

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

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

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

 

客户端经常需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输。

我在网上看了一些开源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。

FastJson执行效率比较高,而且简单易用。

FastJson不依赖于第三方包,直接可以运行在Java JDK1.5之上,FastJson完全支持http://json.org的标准,支持各种JDK类型,包括基本类型、JavaBean、Collection、Map、Enum、泛型等,还支持循环引用。

FastJson项目是开源的:Fastjson代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson

 

一个JSON库涉及的最基本功能就是序列化和反序列化

使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final  T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final  List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

 序列化

public class User {
	private String name;
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

public class Group {
	private List<User> users = new ArrayList<User>();
	private Long id;
	private String name;

	public List<User> getUsers() {
		return users;
	}

	public void setUsers(List<User> users) {
		this.users = users;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

 

public static void main(String[] args) {
	Group group = new Group();
	group.setId(0L);
	group.setName("admin");

	User user1 = new User();
	user1.setAge(23);
	user1.setName("张三");

	User user2 = new User();
	user2.setAge(24);
	user2.setName("李四");

	group.getUsers().add(user1);
	group.getUsers().add(user2);
	
	String jsonString = JSON.toJSONString(group); 
	System.out.println(jsonString);
}
输出结果:
{"id":0,"name":"admin","users":[{"age":23,"name":"张三"},{"age":24,"name":"李四"}]}

 

public static void main(String[] args) {
	HashMap<String, Object> map = new HashMap<String, Object>();
	map.put("username", "zhangsan");
	map.put("age", 24);
	map.put("sex", "男");

	// map集合
	HashMap<String, Object> temp = new HashMap<String, Object>();
	temp.put("name", "xiaohong");
	temp.put("age", "23");
	map.put("girlInfo", temp);

	// list集合
	List<String> list = new ArrayList<String>();
	list.add("爬山");
	list.add("骑车");
	list.add("旅游");
	map.put("hobby", list);

	/*
	 * JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串, [eg:String
	 * jsonString = JSON.toJSONString(map,
	 * SerializerFeature.UseSingleQuotes);]
	 * fastjson序列化时可以选择的SerializerFeature有十几个属性,你可以按照自己的需要去选择使用。
	 */
	String jsonString = JSON.toJSONString(map);
	System.out.println("JSON=" + jsonString);
}
输出结果:
JSON={"sex":"男","username":"zhangsan","age":24,"hobby":["爬山","骑车","旅游"],"girlInfo":{"age":"23","name":"xiaohong"}}

 

默认null是不会输出到JSON串的。
public static void main(String[] args) {
	Group group = new Group();
	group.setId(0L);
	group.setName(null);

	String jsonString = JSON.toJSONString(group);
	
//  默认null是不会写到JSON串的,如果要把null写入JSON串,可以使用SerializerFeature.WriteMapNullValue属性
//  String jsonString = JSON.toJSONString(group,
//		SerializerFeature.WriteMapNullValue);
// {"id":0,"name":null,"users":[]}
	System.out.println(jsonString);
}
输出结果:
{"id":0,"name":"","users":[]}

 反序列化

public static void main(String[] args) {
	String json = "{\"name\":\"张山\",\"age\":24}";
	// 反序列化
	User userInfo = JSON.parseObject(json, User.class);
	System.out.println("name:" + userInfo.getName() + ", age:"
			+ userInfo.getAge());

	json = "{\"user\":{\"name\":\"李四\",\"age\":25}}";
	Map<String, User> map = JSON.parseObject(json,
			new TypeReference<Map<String, User>>() {
			});
	System.out.println(map.get("user").getAge());
}

 

//JSONArray使用
public static void main(String []args)
{
	String json = "[{\"a\":\"111\",\"b\":\"222\",\"c\":\"333\"},{\"a\":\"1000\",\"b\":\"2000\",\"c\":\"000\"},{\"a\":\"999\",\"b\":\"300\",\"c\":\"700\"}]";
	 JSONArray jsonArr = JSONArray.fromObject(json);
	 String a[] = new String[jsonArr.size()];
	 String b[] = new String[jsonArr.size()];
	 String c[] = new String[jsonArr.size()];
	 for (int i = 0; i < jsonArr.size(); i++) {
		 a[i] = jsonArr.getJSONObject(i).getString("a");
		 b[i] = jsonArr.getJSONObject(i).getString("b");
		 c[i] = jsonArr.getJSONObject(i).getString("c");
	}
  
	for (int i = 0; i < c.length; i++) {
		System.out.print(a[i]+" ");
		System.out.print(b[i]+" ");
		System.out.print(c[i]);
		System.out.println();
	}
}

//JSONObject的使用
private static JSONObject createJSONObject(){     
	JSONObject jsonObject = new JSONObject();     
	jsonObject.put("name", "kevin");     
	jsonObject.put("Max.score", new Integer(100));     
	jsonObject.put("Min.score", new Integer(50));     
	jsonObject.put("nickname", "picglet");     
	return jsonObject;     
}    
 

 

Map m=new HashMap();
m.put("a","1");
m.put("b","");
m.put("c",null);
m.put("d",0);

默认null不输出
JSON j=(JSON)JSON.toJSON(m);
System.out.println(j);
//1.输出结果:{"a":"1","b":"","d":0}

如果想输出null,可以使用SerializerFeature参数
String js=JSON.toJSONString(m,SerializerFeature.WriteMapNullValue);
System.out.println(js);
//2.输出结果:{"a":"1","b":"","c":null,"d":0}

使用这个方法:toJSONBytes(Object object, SerializerFeature... features)
在SerializerFeature中配置SerializerFeature.WriteMapNullValue,WriteNullStringAsEmpty

 

分享到:
评论

相关推荐

    Java的JSON处理器 fastjson-v2

    fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 主要特点: 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson) 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、...

    阿里巴巴开源的Java的JSON处理器 fastjson.zip

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

    Java的JSON处理器fastjson使用方法详解

    下面小编就为大家带来一篇Java的JSON处理器fastjson使用方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    fastjson-1.2.50.jar

    Fastjson是一个Java语言编写的JSON处理器。Fastjson.jar作为android开发常用jar包,非常受欢迎,有需要的赶快下载吧!

    Json解析工具之fastJson

    Fastjson是一个Java语言编写的JSON处理器。 1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。 3、无...

    26个阿里 Java 开源项目,很全面!

    3. Java 的 JSON 处理器 fastjson fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson);强大...

    fastjson项目:Fastjson-master.zip

    Fastjson是一个Java语言编写的JSON处理器。

    fastjson-1.2.41.jar 非常好用的JSON转换依赖包

    JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址 2.FastJson的特点: 1.FastJson数度快,无论序列化和反...

    号称.Net下最快的json组件fastJSON.zip

    java下有个大名鼎鼎的阿里巴巴开源的Java的JSON处理器 fastjson,.net也有个.net版的fastjson。这里是作者做的性能测试:代码调用namespace test {  class Program  {  static void Main(string[] args) ...

    FastJson Json解析利器

    Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。

    fastjson解析jar包

    fastjson解析jar包,是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。 、1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection...

    fastjson.jar

    Fastjson是一个Java语言编写的JSON处理器。 1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。 3、无...

    fastjson工具包

    fastjson,Java语言编写的JSON处理器。@阿里巴巴出品

    基于Java和Python的爬虫项目实战源码.zip

    解析Json数据---Json Maven中配置: &lt;dependency&gt; &lt;groupId&gt;com.alibabap&lt;/gorup&gt; &lt;artifactId&gt;fastjson&lt;/artifactId&gt; &lt;version&gt;1.2.35.3&lt;/version&gt; 评估页面的重要程度 链接的欢迎程度---反向链接(即...

    google-api-services-calendar-v3-rev195-1.20.0.zip

    fastjson.zip,fast json是一个json处理器(json解析器 json生成器),用java a fast json parser/generator for java编写。(阿里云数据湖分析https://www.aliyun.com/product/data lake analytics由fastjson提供...

    kie-nio2-model-6.0.0.Beta1.zip

    fastjson.zip,FastJSON是一个用Java编写的JSON处理器(JSON解析器+JSON生成器),这个项目已经被传输到https://github.com/alibaba/FastJSON!

    osmdroid-third-party-4.0.zip

    fastjson.zip,fast json是一个json处理器(json解析器+json生成器),用java a fast json parser/generator for java编写。(阿里云数据湖分析https://www.aliyun.com/product/data lake analytics由fastjson提供...

    fastjson 使用方法详细介绍

    Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。接下来通过本文给大家分享fastjson 使用方法详细介绍,感兴趣的朋友一起看看吧

Global site tag (gtag.js) - Google Analytics