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
相关推荐
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 主要特点: 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson) 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、...
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)强大(支持普通JDK类包括任意Java Bean ...
本示例项目"springboot-fastjson-auto-transform-enum.zip"显然是关于如何在Spring Boot中利用Fastjson进行自定义的枚举(Enum)转换。以下是对这个主题的详细说明: 1. **Fastjson简介** Fastjson是Java语言编写...
**Fastjson - 高效的JSON处理器** ...总的来说,Fastjson作为一款优秀的JSON处理器,因其高效、易用的特性,广泛应用于各种Java项目中。理解并熟练使用Fastjson能有效提升开发效率,优化程序性能。
Fastjson是阿里巴巴开发的一个高性能的JSON库,它不仅解析速度快,且功能强大,无需额外依赖,适用于各种Java项目。下面将详细介绍如何在Java中使用Fastjson进行JSON的解析与生成。 首先,让我们了解Fastjson的主要...
json-lib是一个针对多种Java类库的JSON处理器,包括Hibernate、Spring、EJB等。它的特点是兼容性好,可以方便地处理各种Java集合和自定义类型。然而,相比Gson和FastJson,json-lib的更新较慢,性能可能稍逊一筹。...
Fastjson是阿里巴巴开源的一款高性能、轻量级的Java JSON库,它能够实现Java对象与JSON数据之间的快速转换。在标题和描述中提到的"fastjson1.1.32 jar包",指的是Fastjson的1.1.32版本,这是一个可执行的Java归档...
Fastjson是一个Java语言编写的JSON处理器。Fastjson.jar作为android开发常用jar包,非常受欢迎,有需要的赶快下载吧!
《深入解析Fastjson:Java语言中的JSON处理器》 Fastjson,作为阿里巴巴开发的一款高效、功能丰富的JSON库,已经成为Java开发者处理JSON数据的重要工具。本文将深入探讨Fastjson的设计理念、核心功能、使用方法以及...
Fastjson是一个Java语言编写的JSON处理器。 1、遵循http://json.org标准,为其官方网站收录的参考实现之一。 2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。 3、无...
3. Java 的 JSON 处理器 fastjson fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点:快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson);强大...
Fastjson是阿里巴巴开发的一款高性能的JSON库,它提供了Java对象和JSON数据之间的快速转换功能。在原生的Fastjson中,如果我们想要为某个类的字段设置别名,通常是通过`@JSONField(serializeName = "别名")`注解来...
在标题中提到的`fastjson-1.2.75.zip`是一个包含Fastjson库的压缩包,其中的`fastjson-1.2.75.jar`文件是Fastjson的可执行Java类库,适用于Java开发者在项目中引用和使用。 在Java世界中,JSON(JavaScript Object ...
java下有个大名鼎鼎的阿里巴巴开源的Java的JSON处理器 fastjson,.net也有个.net版的fastjson。这里是作者做的性能测试:代码调用namespace test { class Program { static void Main(string[] args) ...
JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址 2.FastJson的特点: 1.FastJson数度快,无论序列化和反...
常见的JSON库有Jackson、Gson和Fastjson等。这里以Jackson为例,Jackson是Java中最流行的JSON库之一,提供了丰富的API用于JSON的序列化和反序列化。在SpringMVC中,我们可以使用Jackson的`@ResponseBody`注解,将...
FastJson是由阿里巴巴开源的一款Java语言编写的高性能的JSON处理器。它可以方便快速地将Java对象转换成JSON字符串,也可以将JSON字符串转换回Java对象。FastJson支持泛型、支持循环引用、支持各种Java集合类型等特性...
1. **Jackson**:Jackson是一个高性能的JSON处理器,它的核心库`com.fasterxml.jackson.core`包含了JSON解析器和生成器。`ObjectMapper`类是Jackson的主要接口,可以将Java对象转换为JSON字符串,反之亦然。此外,`...
FastJson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发的。他遵循http://json.org标准,为其官方网站收录的参考实现之一。功能强大,支持各种JDK版本。此外,它最大的特点是无依赖,不需要额外的jar,能够...
在实际应用中,为了处理JSON,Java开发人员可能会使用如Jackson、Gson或Fastjson等库。例如,Jackson库提供了`ObjectMapper`类,可以方便地实现对象到JSON和JSON到对象的转换,同时还支持自定义序列化和反序列化行为...