java JSON解析库Alibaba Fastjson用法详解

本文实例讲述了java JSON解析库Alibaba Fastjson用法。分享给大家供大家参考,具体如下:

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

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

验证json数据格式网址:http://tools.jb51.net/code/json

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;
	}

}

测试结果:

推荐链接:【JSON解析】浅谈JSONObject的使用

差不多就这些吧,如果上面有什么地方错误了,请及时指出,避免更多人误解。如果有什么不懂的,欢迎交流!

PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具:
http://tools.jb51.net/code/json

JSON在线格式化工具:
http://tools.jb51.net/code/jsonformat

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat

在线json压缩/转义工具:
http://tools.jb51.net/code/json_yasuo_trans

更多关于java相关内容感兴趣的读者可查看本站专题:《Java操作json格式数据技巧总结》、《Java数组操作技巧总结》、《Java字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • 基于java解析JSON的三种方式详解

    本文实例分析了基于java解析JSON的三种方式.分享给大家供大家参考,具体如下: 一.什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON就是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串.数字.也可以是另一个数组或对象) 所以 {"name"

  • Java使用JSONObject操作json实例解析

    本文实例讲述了Java使用JSONObject操作json.分享给大家供大家参考,具体如下: 简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成.易于理解.阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言.  JSON建构于两种结构: "名称/值"对的集合(A Collection of name/va

  • JAVA使用Gson解析json数据实例解析

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成.同XML一样是一种"传输格式".JSON采用与编程语言无关的文本格式,便于数据传输.存储.交换. 封装类Attribute: public class Attribute { private int id; private String name; private int age; public int getId() { return id; } p

  • java中fastjson生成和解析json数据(序列化和反序列化数据)

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法. fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack

  • java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的总结. 要解析json,首先要导入解析json的工具类. import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; 我们都知道JSON中有json对象与json数组(json数据就是js

  • Java使用JSONPath解析JSON完整内容详解

    JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的json内容. maven中添加jar包 JsonPath可在Central Maven存储库中找到. Maven用户将其添加到您的POM. com.jayway.jsonpath json-path 2.2.0 操作符 操作 说明 $

  • 使用Java进行Json数据的解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果 { "translation": [ "爱" ], "basic": { "us-phonetic": "lʌv", "phonetic": "lʌv"

  • 基于JAVA中的四种JSON解析方式详解

    我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 2.GSON 3.FastJSON 4.jackson JSON操作涉及到的类: public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id;

  • java使用FastJson解析Json数据

    fastjson 是一个性能极好的用 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发. 主要特点: 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson) 强大(支持普通JDK类包括任意Java Bean Class.Collection.Map.Date或enum) 零依赖(没有依赖其它任何类库除了JDK) 一 .生成Json: JavaBean.List<JavaBean>.List<String>.List<Map&l

  • java解析任意层数json字符串的方法

    复制代码 代码如下: //解析策略,有可能是解析json字符串,有可能为数据中的图片地址,email等package cc.util.regex; public enum RegexPolicy { Json("Json"), Image("ImageFromHtml"); private String value; RegexPolicy (String value) {  this.value = value; } @Override public String

随机推荐