`

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 ...

    springboot-fastjson-auto-transform-enum.zip

    本示例项目"springboot-fastjson-auto-transform-enum.zip"显然是关于如何在Spring Boot中利用Fastjson进行自定义的枚举(Enum)转换。以下是对这个主题的详细说明: 1. **Fastjson简介** Fastjson是Java语言编写...

    fastjson-1.1.36(json处理器)

    **Fastjson - 高效的JSON处理器** ...总的来说,Fastjson作为一款优秀的JSON处理器,因其高效、易用的特性,广泛应用于各种Java项目中。理解并熟练使用Fastjson能有效提升开发效率,优化程序性能。

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

    Fastjson是阿里巴巴开发的一个高性能的JSON库,它不仅解析速度快,且功能强大,无需额外依赖,适用于各种Java项目。下面将详细介绍如何在Java中使用Fastjson进行JSON的解析与生成。 首先,让我们了解Fastjson的主要...

    gson,fastJson,json-lib实例

    json-lib是一个针对多种Java类库的JSON处理器,包括Hibernate、Spring、EJB等。它的特点是兼容性好,可以方便地处理各种Java集合和自定义类型。然而,相比Gson和FastJson,json-lib的更新较慢,性能可能稍逊一筹。...

    fastjson jar包 和 api

    Fastjson是阿里巴巴开源的一款高性能、轻量级的Java JSON库,它能够实现Java对象与JSON数据之间的快速转换。在标题和描述中提到的"fastjson1.1.32 jar包",指的是Fastjson的1.1.32版本,这是一个可执行的Java归档...

    fastjson-1.2.50.jar

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

    fastjson项目:Fastjson-master.zip

    《深入解析Fastjson:Java语言中的JSON处理器》 Fastjson,作为阿里巴巴开发的一款高效、功能丰富的JSON库,已经成为Java开发者处理JSON数据的重要工具。本文将深入探讨Fastjson的设计理念、核心功能、使用方法以及...

    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是阿里巴巴开发的一款高性能的JSON库,它提供了Java对象和JSON数据之间的快速转换功能。在原生的Fastjson中,如果我们想要为某个类的字段设置别名,通常是通过`@JSONField(serializeName = "别名")`注解来...

    jar包fastjson-1.2.75.zip

    在标题中提到的`fastjson-1.2.75.zip`是一个包含Fastjson库的压缩包,其中的`fastjson-1.2.75.jar`文件是Fastjson的可执行Java类库,适用于Java开发者在项目中引用和使用。 在Java世界中,JSON(JavaScript Object ...

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

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

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

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

    springmvc-json-lib.rar

    常见的JSON库有Jackson、Gson和Fastjson等。这里以Jackson为例,Jackson是Java中最流行的JSON库之一,提供了丰富的API用于JSON的序列化和反序列化。在SpringMVC中,我们可以使用Jackson的`@ResponseBody`注解,将...

    springboot实现FastJson解析json数据的方法

    FastJson是由阿里巴巴开源的一款Java语言编写的高性能的JSON处理器。它可以方便快速地将Java对象转换成JSON字符串,也可以将JSON字符串转换回Java对象。FastJson支持泛型、支持循环引用、支持各种Java集合类型等特性...

    json封装的jar包

    1. **Jackson**:Jackson是一个高性能的JSON处理器,它的核心库`com.fasterxml.jackson.core`包含了JSON解析器和生成器。`ObjectMapper`类是Jackson的主要接口,可以将Java对象转换为JSON字符串,反之亦然。此外,`...

    JSON序列化工具探析.pdf

    FastJson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发的。他遵循http://json.org标准,为其官方网站收录的参考实现之一。功能强大,支持各种JDK版本。此外,它最大的特点是无依赖,不需要额外的jar,能够...

    java操作json的通用类

    在实际应用中,为了处理JSON,Java开发人员可能会使用如Jackson、Gson或Fastjson等库。例如,Jackson库提供了`ObjectMapper`类,可以方便地实现对象到JSON和JSON到对象的转换,同时还支持自定义序列化和反序列化行为...

Global site tag (gtag.js) - Google Analytics