java fastjson解析json_java JSON解析库Alibaba Fastjson用法详解

news/2024/7/16 5:33:39 标签: java fastjson解析json

本文实例讲述了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依赖

com.alibaba

fastjson

1.2.47

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

f63aaf14de0c817809b8f16448f8ec65.png

json格式

json数组格式:

f451da85c3b996d5a963ba17657d1d22.png

对象数组格式:

[

{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();

输出结果

b22a2098db87bdbcd4086a6f272c04a6.png

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

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

List 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 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());

}

输出结果

85ec115d32afde96ec32aedbd7db3aa8.png

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

String str2 = "{"name": "张三", "age": 24, "city": "宜昌"}";

User user = JSONArray.parseObject(str2, User.class);

System.out.println("姓名:"+user.getName()+", 年龄:"+user.getAge()+", 地址:"+user.getCity());

输出结果:

c6fd9135ab1095fa231714ae1e607531.png

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

运行结果:

ad4df27e76fdd9f92daaf07d52694a4a.png

全部代码:

测试类:

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

}

}

测试结果:

c6fe5f69d06c9a23cb487a84232cc1c0.png

推荐链接:【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程序设计有所帮助。


http://www.niftyadmin.cn/n/712249.html

相关文章

二元函数泰勒公式例题_高数031泰勒公式求极限 真香!

今天我们来看看泰勒公式的一些综合应用&#xff0c;先来如何利用泰勒公式求极限&#xff0c;有一些极限十分复杂难看&#xff0c;对函数密集恐惧症患者刺激巨大&#xff0c;这时候看似复杂的泰勒展开反而会将其巧妙化简&#xff0c;让问题迎刃而解。并且在原则上&#xff0c;任…

LVS-DR负载均衡-03

LB端脚本 # vim /usr/local/sbin/lvs-dr.sh #!/bin/bash#description : start LVS OF DIRECTORSERVER #GW192.168.28.253#WEBSITE DIRECTOR VIP WEB_VIP192.168.28.111 WEB_RIP1192.168.28.134 WEB_RIP2192.168.28.135 . /etc/rc.d/init.d/functions logger $0 called with $1 …

web前端学习(二十七)——CSS3导航栏的相关设置

1.CSS导航栏 垂直 水平 导航栏 熟练使用导航栏&#xff0c;对于任何网站都非常重要。 使用CSS你可以转换成好看的导航栏而不是枯燥的HTML菜单。 2.导航栏链接列表 作为标准的HTML基础一个导航栏是必须的&#xff0c;在我们的例子中我们将建立一个标准的HTML列表导航栏。 导航条…

ABP官方文档翻译 7.2 Hangfire集成

Hangfire集成 介绍ASP.NET Core集成ASP.NET MVC 5.x集成 面板授权介绍 Hangfire是一个综合的后台job管理器。你可以 把它集成到ABP&#xff0c;用来取代默认的后台job管理器。Hangfire可以使用相同的后台jobAPI。因此&#xff0c;你的代码与Hangfire是独立的。但是&#xff0c;…

vscode还用装git_VScode 搭配Git

VScode搭配Git一、Visual Studio Code安装Windows版下载地址2、安装一般默认下一步即可3、安装完&#xff0c;默认语言为英文&#xff0c;需要安装中文语言&#xff0c;步骤如下(1)点击左侧的小方块(拓展)(2)搜索框输入“Chinese”,点击“Install”(3)稍等一会&#xff0c;软件…

一步一步学习Redis——五大数据类型之哈希(Hash)的相关命令

文章目录&#xff1a; 1.开篇 2.Redis哈希&#xff08;Hash&#xff09;的相关命令 2.1 HSET命令 语法 返回值 2.2 HGET命令 语法 返回值 2.3 HMSET命令 语法 返回值 2.4 HMGET命令 语法 返回值 2.5 HSETNX命令 语法 返回值 2.6 HDEL命令 语法 返回值 …

从java中安装webolgc_Javaweb| 文件下载

后台&#xff1a;Conteoller/*** 下载文件* param fileurl* param session* param response* throws IOException*/RequestMapping("/download")public void getFile(String fileurl, HttpSession session, HttpServletResponse response)throws IOException {Strin…

Git-命令的使用

2019独角兽企业重金招聘Python工程师标准>>> 丢弃历史 如现有提交历史: A->B->C->D->E->F,欲丢弃 C 之前的提交历史使得历史记录变为: C->D->E->F,则此时:基于 C 创建一个根提交,可以使用 git commit-tree将 D,E,F 变基到刚创建的根提交上.…