Json是一种轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

现在主流的对象与 JSON 互转的工具很多,这里介绍的是阿里巴巴的开源库 - Fastjson。Fastjson是一个Java库,可用于将Java对象转换为其JSON表示。它还可用于将JSON字符串转换为等效的Java对象。Fastjson可以处理任意Java对象,包括您没有源代码的预先存在的对象。

验证json数据格式网址:http://www.bejson.com/

Fastjson 的优点

  • 速度快
  • fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
  • 使用广泛
  • fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
  • 测试完备
  • fastjson有非常多的testcase,在1.2.11版本中,testcase超过3321个。每次发布都会进行回归测试,保证质量稳定。
  • 使用简单
  • fastjson的 API 十分简洁。
  • 功能完备
  • 支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。

Fastjson依赖

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

FastJson下载地址:https://github.com/alibaba/fastjson

json格式

json数组格式:

对象数组格式:

[
    {alt: '[坏笑]', src:'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/pcmoren_huaixiao_org.png'}, 
    {alt: '[舔屏]', src:'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/pcmoren_tian_org.png'}, 
    {alt: '[污]', src: 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/pcmoren_wu_org.png'}
]

json对象格式:

{
    "ID": 1001,
    "name": "张三",
    "age": 24
}

因为之前在开发中遇到过这种json转换,当时用的是jackson,就觉得很麻烦,最近在写一个小项目时接触到Fastjson时,就觉得这个非常好用。

一般实际开发过程中,都是从前台拼接后传递过来的json字符串,下面测试就直接用的java字符串定义的json格式字符串(视情况而定)。

转换一定需要先添加依赖或者jar包才能使用。

把字符串json数组转为json格式数组取值:

String str = "[\"张三\",\"18\",\"宜昌\"]";
 
JSONArray array = JSONArray.parseArray(str); 
System.out.println(array.get(0));
System.out.println(array.get(1));
System.out.println(array.get(2));
System.out.println();

输出结果

字符串json对象数组转为json格式或者list对象

返回list集合对象时后面需要加上返回对象类

List<User> array2 = JSONArray.parseArray(str1, User.class); 
String str1 = "["   
		"	{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"},"   
		"	{\"name\": \"李四\", \"age\": 25, \"city\": \"宜昌\"},"   
		"	{\"name\": \"王五\", \"age\": 22, \"city\": \"宜昌\"}"   
		"]";
JSONArray array1 = JSONArray.parseArray(str1); 
System.out.println(array1.get(0).toString());
System.out.println(array1.get(1).toString());
System.out.println(array1.get(2).toString());
System.out.println();
 
List<User> array2 = JSONArray.parseArray(str1, User.class); 
for(int i = 0; i < array2.size(); i  ) {
	System.out.println("姓名:" array2.get(i).getName() ", 年龄:" array2.get(i).getAge() ", 地址:" array2.get(i).getCity());
}

输出结果

字符串json对象格式转为实体对象

String str2 = "{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}";
User user = JSONArray.parseObject(str2, User.class);
System.out.println("姓名:" user.getName() ", 年龄:" user.getAge() ", 地址:" user.getCity());

输出结果:

json字符串转为json格式

String str2 = "{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}";
JSONObject json = JSONObject.parseObject(str2);
String name = json.getString("name");
String age = json.getString("age");
String city = json.getString("city");
System.out.println(name);
System.out.println(age);
System.out.println(city);

运行结果:

全部代码

测试类:

import java.util.List;
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
 
public class JsonArray {
	public static void main(String[] args) {
		String str = "[\"张三\",\"18\",\"宜昌\"]";
		
		JSONArray array = JSONArray.parseArray(str); 
		System.out.println(array.get(0));
		System.out.println(array.get(1));
		System.out.println(array.get(2));
		System.out.println();
		
		String str1 = "["   
				"	{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"},"   
				"	{\"name\": \"李四\", \"age\": 25, \"city\": \"宜昌\"},"   
				"	{\"name\": \"王五\", \"age\": 22, \"city\": \"宜昌\"}"   
				"]";
		JSONArray array1 = JSONArray.parseArray(str1); 
		System.out.println(array1.get(0).toString());
		System.out.println(array1.get(1).toString());
		System.out.println(array1.get(2).toString());
		System.out.println();
		
		List<User> array2 = JSONArray.parseArray(str1, User.class); 
		for(int i = 0; i < array2.size(); i  ) {
			System.out.println("姓名:" array2.get(i).getName() ", 年龄:" array2.get(i).getAge() ", 地址:" array2.get(i).getCity());
		}
		System.out.println();
		
		String str2 = "{\"name\": \"张三\", \"age\": 24, \"city\": \"宜昌\"}";
		User user = JSONArray.parseObject(str2, User.class);
		System.out.println("姓名:" user.getName() ", 年龄:" user.getAge() ", 地址:" user.getCity());
		System.out.println();
		
		JSONObject json = JSONObject.parseObject(str2);
		String name = json.getString("name");
		String age = json.getString("age");
		String city = json.getString("city");
		System.out.println(name);
		System.out.println(age);
		System.out.println(city);
	}
}

测试类对应的User类:

public class User {
	private String name;
	private String city;
	private Integer age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public User(String name, String city, Integer age) {
		super();
		this.name = name;
		this.city = city;
		this.age = age;
	}
	
}

测试结果:

差不多就这些吧,以上为个人经验,希望能给大家一个参考,也希望大家多多支持Devmax。

Alibaba Fastjson之超好用的JOSN解析库的更多相关文章

  1. fastjson转换对象实体@JsonProperty不生效问题及解决

    这篇文章主要介绍了fastjson转换对象实体@JsonProperty不生效问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. java安全fastjson1.2.24反序列化TemplatesImpl分析

    这篇文章主要介绍了java安全fastjson1.2.24反序列化TemplatesImpl分析,fastjson是alibaba开源的一个用于处理json数据格式的解析库,它支持将java对象解析成json字符串格式的数据,也可以将json字符串还原成java对象

  3. Spring Cloud Alibaba Nacos服务治理平台服务注册、RestTemplate实现微服务之间访问负载均衡访问的问题

    这篇文章主要介绍了Spring Cloud Alibaba:Nacos服务治理平台,服务注册、RestTemplate实现微服务之间访问,负载均衡访问,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. Fastjson反序列化随机性失败示例详解

    这篇文章主要为大家介绍了Fastjson反序列化随机性失败示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  5. Spring Cloud Alibaba微服务组件Sentinel实现熔断限流

    这篇文章主要为大家介绍了Spring Cloud Alibaba微服务组件Sentinel实现熔断限流过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  6. Alibaba Fastjson之超好用的JOSN解析库

    这篇文章主要介绍了Alibaba Fastjson之超好用的JOSN解析库,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. 微服务间调用Retrofit在Spring Cloud Alibaba中的使用

    这篇文章主要为大家介绍了微服务间调用Retrofit在Spring Cloud Alibaba中的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. Spring Cloud Alibaba使用Nacos作为注册中心和配置中心

    这篇文章主要为大家介绍了Spring Cloud Alibaba使用Nacos作为注册中心和配置中心的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  9. Spring boot详解fastjson过滤字段为null值如何解决

    这篇文章主要介绍了解决Spring boot中fastjson过滤字段为null值的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  10. Springboot 通过FastJson实现bean对象和Json字符串互转问题

    这篇文章主要介绍了Springboot 通过FastJson实现bean对象和Json字符串互转,本文尝试验证两种场景给大家详细介绍,对Springboot FastJson实现bean和Json互转问题,感兴趣的朋友一起看看吧

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部