四种JSON解析工具--(json-lib&Jackson&Gson&FastJson)

JsonViewer:轻松解析JSON数据的工具 本文还有配套的精品资源,点击获取 简介:JSON是广泛应用于Web服务和应用程序间的数据交换格式,易于人阅读和机器解析。JsonViewer作为一款绿色版JSON查看器,提供便捷的方式查看、理解、解析JSON数据。它支持格式化JSON内容,自定义解析,以及提供可视化的数据结构展示。此外,该软件还支持与Fiddler等网络调试工具配合,方便开发者调试Web应用。适合前后端开发... 阅读详情

主要分为以下四类:

一、json-lib

json-lib是较早出现且应用最广泛的json解析工具,但是较多的依赖第三方jar包。

使用json-lib需引入以下jar包:

  • commons-beanutils-1.8.3.jar
  • commons-collections-3.2.1.jar
  • commons-lang-2.6.jar
  • commons-logging-1.1.1.jar
  • ezmorph-1.0.6.jar
  • json-lib-2.4-jdk15.jar

且较复杂的类型转换json-lib会产生缺陷,出现问题。因此json-lib如今一般无法满足互联网化的需求。

使用实例:

jar包及项目结构如下:
在这里插入图片描述
实体类Product.java

package cn.cf.domain;

/**
 * 商品实体类
 * 
 * @author Administrator
 *
 */
public class Product {
	private String name;
	private Double price;
	private String category;
	private Double weight;

	public Product() {
		super();
	}

	public Product(String name, Double price, String category, Double weight) {
		super();
		this.name = name;
		this.price = price;
		this.category = category;
		this.weight = weight;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Double getPrice() {
		return price;
	}

	public void setPrice(Double price) {
		this.price = price;
	}

	public String getCategory() {
		return category;
	}

	public void setCategory(String category) {
		this.category = category;
	}

	public Double getWeight() {
		return weight;
	}

	public void setWeight(Double weight) {
		this.weight = weight;
	}

	@Override
	public String toString() {
		return "Product [name=" + name + ", price=" + price + ", category=" + category + ", weight=" + weight + "]";
	}
}

测试代码TestDemo.java

  • JavaBean/ list/ map转json

代码如下:

    //创建product对象
    		Product product1 = new Product("火龙果",20d,"水果",2d);
    		Product product2 = new Product("东北散装珍珠米",10d,"粮食",3d);
    		Product product3 = new Product("排骨",24d,"肉类",0.5d);
    		//创建产品list集合
    		List<Product> list =new ArrayList<Product>();
    		list.add(product1);
    		list.add(product2);
    		list.add(product3);
    		//创建产品map集合
    		Map<String, Product> map = new HashMap<String, Product>();
    		map.put(product1.getName(), product1);
    		map.put(product2.getName(), product2);
    		map.put(product3.getName(), product3);
    		
        //将product转换为json
		JSONArray jsonBean = JSONArray.fromObject(product1);
		System.out.println("输出product的json数据");
		System.out.println(jsonBean);
		//将list集合转换为json
		JSONArray jsonArray = JSONArray.fromObject(list);
		System.out.println("输出list的json数据");
		System.out.println(jsonArray);
		//将map集合转为json
		JSONArray jsonMap = JSONArray.fromObject(map);
		System.out.println("输出map的json数据");
		System.out.println(jsonMap);

结果如下:
在这里插入图片描述

  • 使用JsonCofig进行筛选要显示的数据

      /*
       * 设置筛选条件
       */
      JsonConfig jsonConfig = new JsonConfig();
      jsonConfig.setExcludes(new String[] {"weight", "category"});
      
      //单个bean不显示重量,分类
      System.out.println("输出product筛选的json数据");
      JSONArray jsonBean1 = JSONArray.fromObject(product1, jsonConfig);
      System.out.println(jsonBean1);
      
      //list不显示重量分类
      System.out.println("输出list筛选的json数据");
      JSONArray jsonArray1 = JSONArray.fromObject(list, jsonConfig);
      System.out.println(jsonArray1);
      
      //map不显示重量分类
      JSONArray jsonMap1 = JSONArray.fromObject(map, jsonConfig);
      System.out.println("输出mapt筛选的json数据");
      System.out.println(jsonMap1);
    

结果如下:
在这里插入图片描述

  • jsonObject转为JavaBean

      //jsonObject转换为JavaBean
      String str = "{'name':'鸡蛋','price':8,'weight':1.3,'category':'禽蛋'}";
      Product product4 = (Product) JSONObject.toBean(JSONObject.fromObject(str), Product.class);
      System.out.println(product4);
    

结果如下:
在这里插入图片描述

二、Jackson

jackson相比于json-lib框架,所需要的依赖jar包要少一点,性能较高且简单易用。

需引入jar包:

  • jackson-core.jar
  • jackson-mapper.jar

实例如下:

  • 项目结构及jar包
    在这里插入图片描述
  • 实体类同前
  • 测试类

转json

//创建product对象
Product product1 = new Product("火龙果",20d,"水果",2d);
Product product2 = new Product("东北散装珍珠米",10d,"粮食",3d);
Product product3 = new Product("排骨",24d,"肉类",0.5d);
//创建产品list集合
List<Product> list =new ArrayList<Product>();
list.add(product1);
list.add(product2);
list.add(product3);
//创建产品map集合
Map<String, Product> map = new HashMap<String, Product>();
map.put(product1.getName(), product1);
map.put(product2.getName(), product2);
map.put(product3.getName(), product3);

//ObjectMapper为Jackson的核心,所有json操作都是用ObjectMapper实现
ObjectMapper mapper = new ObjectMapper();

//Product转化为json
String productJson = mapper.writeValueAsString(product1);
System.out.println("Product转化为json");
System.out.println(productJson);
//list转化为json
String listJson = mapper.writeValueAsString(list);
System.out.println("list转化为json");
System.out.println(listJson);
//map转化为json
String mapJson = mapper.writeValueAsString(map);
System.out.println("map转化为json");
System.out.println(mapJson);

结果如下:
在这里插入图片描述
转化为JavaBean

String str = "{\"name\":\"鸡蛋\",\"price\":8,\"weight\":1.3,\"category\":\"禽蛋\"}";
Product product4 = mapper.readValue(str, Product.class);
System.out.println(product4);

字符串需使用双引号,使用单引号报错

结果如下:

在这里插入图片描述

三、Gson

Gson是Google研发的,目前功能最全的Json解析器。主要应用toJson和fromJson两个转换函数,无需额外的依赖,使用较方便

使用jar包:

  • gson-2.8.0.jar

实例如下(实体类同上例):

转化为json

// 创建product对象
	Product product1 = new Product("火龙果", 20d, "水果", 2d);
	Product product2 = new Product("东北散装珍珠米", 10d, "粮食", 3d);
	Product product3 = new Product("排骨", 24d, "肉类", 0.5d);
	// 创建产品list集合
	List<Product> list = new ArrayList<Product>();
	list.add(product1);
	list.add(product2);
	list.add(product3);
	// 创建产品map集合
	Map<String, Product> map = new HashMap<String, Product>();
	map.put(product1.getName(), product1);
	map.put(product2.getName(), product2);
	map.put(product3.getName(), product3);

// 创建Gson对象
Gson gson = new Gson();

//将product转换为json
System.out.println("输出product的json数据");
String jsonProduct = gson.toJson(product1);
System.out.println(jsonProduct);
//将list集合转换为json
System.out.println("输出list的json数据");
String jsonArray = gson.toJson(list);
System.out.println(jsonArray);
//将map集合转为json
String jsonMap = gson.toJson(map);
System.out.println("输出map的json数据");
System.out.println(jsonMap);

结果如下:
在这里插入图片描述
json转换为实体

String str = "{'name':'鸡蛋','price':8,'weight':1.3,'category':'禽蛋'}";
Product product4 = gson.fromJson(str, Product.class);
System.out.println(product4);

结果如下:
在这里插入图片描述

四、FastJson

FastJson是阿里巴巴的开源框架,速度很快,且无其他依赖

导入jar包:

  • fastjson-1.2.58.jar

实例如下:

转为json

	String jsonProduct = JSON.toJSONString(product1);
	System.out.println(jsonProduct);
	
	String jsonArray = JSON.toJSONString(list);
	System.out.println(jsonArray);
	
	String jsonMap = JSON.toJSONString(map);
	System.out.println(jsonMap);

结果如下:
在这里插入图片描述
json转为实体:

	String str = "{'name':'鸡蛋','price':8,'weight':1.3,'category':'禽蛋'}";
	Product product4 = JSON.parseObject(str, Product.class);
	System.out.println(product4);

结果如下:
在这里插入图片描述

以上是JSON的四种解析工具的基础用法。详细的后部再单个补充。

JSON字符串解析器工具的设计与实现 本文还有配套的精品资源,点击获取 简介:JSON,一种轻量级的数据交换格式,被广泛用于数据交换中,易于人阅读和编写,同时也易于机器解析和生成。本文介绍了一款“Json字符串解析小工具”,它能对JSON格式数据进行格式化显示和树结构展示,提高开发效率。同时,该工具已经过优化,修复了早期版本中的BUG。本文还提供了该工具的文件资源,供学习和自定义使用。 1. JSON... 阅读详情

相关推荐

疫情数据分析的“核武器”!JHU CSSE COVID-19数据集超深度解析与实战指南(附代码)

在面对这场没有硝烟的战争时,除了医护人员在前线与病毒搏斗,还有一群默默的英雄——数据科学家和分析师,他们利用手中的“数据武器”,昼夜不停地监测、分析、预测疫情走势,为政府决策、资源调配、公众科普提供了至关重要的支撑。同时,由于某些国家(如美国、加拿大、澳大利亚、中国等)的数据细化到省/州级别,为了得到国家层面的总数据,我们需要按国家和日期进行聚合。正是在这样的背景下,经过这些步骤,我们已经得到了一个包含了累计数据、每日新增数据和活跃病例数的完整数据集,可以开始进行深入的分析和可视化了!

wylee的博客 1165

6 款好用到爆的 JSON 处理工具,极大提高效率!

前言JSON(JavaScript 对象标注)是一种流行的轻量级数据交换格式,在网络上已很常见。众所周知,JSON 让开发人员易于使用,又让机器易于解析和生成。JSON 吸引了工具构建者的注意,它们开发了用于重新格式化、验证和解析 JSON 的众多工具,这不足为奇。这些工具既有在 Web浏览器 中运行的在线实用程序,又有面向代码编辑器和 IDE 的插件。平时开发中,服务之...

Java笔记虾 2万+

别再说Fortran过时了!手把手教你用VS Code + gfortran搭建现代开发环境(2024版)

本文打破Fortran过时的刻板印象,详细介绍如何利用VS Code和gfortran搭建现代开发环境。从编译器安装、VS Code插件配置到项目结构标准化,提供完整的2024版跨平台解决方案,并展示Fortran 2023标准的协程、并行计算等现代特性,助力科学计算与高性能开发。

weixin_42629815的博客 241

Java常用的几种JSON解析工具

Java常用的几种JSON解析工具

qinxun2008081的博客 1万+

Ubuntu下用QEMU模拟运行OpenBMC

在调试过程中,安装了很多依赖库,具体没有记录。关于kvm,也没理清具体有什么作用。本文仅记录,用QEMU成功的将OpenBMC跑起来的过程,做备忘,也供大家参考。

Sunny的博客 1205

单细胞数据互转实战:从Scanpy的h5ad到Seurat对象的四种高效方法

本文针对单细胞数据分析中Scanpy的h5ad格式与Seurat对象互转的常见难题,详细对比了SeuratDisk、anndataR、schard和sceasy四种高效转换方法。文章从实战出发,剖析了每种方法的原理、操作流程、优缺点及避坑指南,并提供了清晰的选型策略,帮助用户根据数据特点选择最佳方案,实现跨平台数据的无缝衔接。

weixin_29099217的博客 446

解析JSON 几大工具

不管是和前端交互、调用第三方接口,还是处理配置文件,几乎都绕不开JSON。这篇文章总结了6种主流的JSON解析方法,希望对你会有所帮助。在Java开发中,解析JSON是一个非常常见的需求。曾有安全漏洞争议,社区支持稍逊Jackson。中小型项目,简单的JSON转换场景。企业级项目,复杂序列化和反序列化场景。丰富的注解支持,便于控制序列化行为。性能高,社区活跃,企业级项目首选。轻量级,简单易用,适合中小型项目。功能强大,性能优异,支持复杂结构。高性能需求,大数据量的动态解析。

lenyan~的博客 2714

Labview邪修01:贪吃蛇小游戏

摘要:博主使用LabVIEW 2020(32位)复刻了经典贪吃蛇游戏。程序具备随机生成蛇(初始长度3)和食物、三档速度调节、键盘方向控制等功能,碰撞边界或自身即游戏结束。实现过程包括:1)界面设计,使用二维颜色盒数组构建游戏区,添加速度枚举控件和功能按钮;2)程序架构,采用模块化设计包含Main.vi、Start.vi等6个核心VI,分别处理初始化、位置计算、碰撞检测等逻辑;3)事件驱动机制,通过开始/结束事件、按键响应和超时循环实现游戏流程控制。运行时可实时显示分数,完整还原了贪吃蛇的核心玩法。

weixin_38637405的博客 970

四大常用JSON解析器完成对象转换的案例

解析和生成。解析功能将JSON字符串解析为内存中的数据结构,通常是对象、数组或键值对的集合。生成功能则将内存中的数据结构转换为JSON字符串。许多编程语言都提供了内置的JSON解析器和生成器,可以轻松地处理JSON数据。例如,JavaScript中的JSON.parse()函数用于解析JSON字符串,将其转换为JavaScript对象;JSON.stringify()函数用于将JavaScript对象转换为JSON字符串。其他编程语言如Python、Java、C#等也提供了类似的功能。

qq_45973897的博客 3176

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 433

(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.youkuaiyun.com/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}

江南才尽江南山,年少无知年少狂! 1024

Json格式以及常见的Json解析器

目录 什么是JSON? 交换数据 JSON 语法 JSON 语法规则 JSON 数据- 名称和值 实例 JSON 值 JSON 数据类型 有效的数据类型 JSON 字符串 实例 JSON 数字 实例 JSON 对象 实例 JSON 数组 实例 JSON 布尔 实例 JSON 对象 对象语法 实例 访问对象值 实例 嵌套的 JSON 对象 实例 实例 JSON 数组 作为 JSON 对象的数组 实例 JSON 对象中的数组 实例

weixin_47277897的博客 4660

基于MATLAB开发AUTOSAR软件应用层模块-part2.建立一个AUTOSAR的模型,并生成autosar格式代码

上一篇我们建立了一个空模型,这篇我们接着上篇文章,建立一个简单的模型 点击 Library Browser,打开simulink模块库,见下图 左侧是模块库的列表,右侧是每个模块库里包含的具体的模块。 点击通用模块库,里边是一些常见的模块, 我们选取里边的3个模块,分别是输入,输出和增益三个模块,右键点击模块,选择add block to model xx,可以把模块添加到模型中。 然后练好连线 一个简单的模型就搭建好了,之后我们修改配置,将模型修改为AUT...

汽车软件开发 3302

Json解析的这6种方案,真香!

方法适用场景优点缺点Jackson企业级项目,复杂序列化和反序列化场景功能强大,性能优异,支持复杂结构配置复杂,学习曲线高Gson中小型项目,简单的 JSON 转换场景轻量级,简单易用功能有限,性能略逊FastJSON高性能需求,大数据量的动态解析性能极高,功能丰富曾有安全漏洞争议,社区支持稍逊 JacksonJsonPath嵌套结构复杂、动态字段提取场景字段提取语法简单,灵活性强不支持序列化和反序列化org.json快速解析或构造 JSON 场景轻量级,适合简单场景。

2401_89221445的博客 1170

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

json文件解析工具_推荐 9 个 爱不释手的 JSON 工具!开发必看!

作者:Paul Krill,翻译:布加迪链接:developer.51cto.com/art/201910/604745.htmJSON(JavaScript对象标注)是一种流行的轻量级数据交换格式,在网络上已很常见。众所周知,JSON让开发人员易于使用,又让机器易于解析和生成。JSON吸引了工具构建者的注意,它们开发了用于重新格式化、验证和解析JSON的众多工具,这不足为奇。这些工具既...

weixin_39710396的博客 8050

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

libjson 编译和使用 - 1. 编译

最近想用box2dEdit来编辑一下比较复杂的图形然后倒入到自己有游戏里,但box2dEdit编辑后输出的是json文件。 因为没有用C++解析json文件的经验,在网上找了很多有关json的开源项目,有cjson(这是c编写的)jsoncpp(C++的项目,但有人说它的移植性不够好)libjson(支持C和C++)由于对C有一种莫名的恐惧感,所以最后还是选择了libjson这个库。 OK!先

cocos2d-x 学习之路 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

libjson-c使用介绍

libjson-c介绍

to_be_better_wen的博客 2417

[善用佳软]推荐掌握小工具:Json解析的命令行工具jq

我们在各种生产环境或者开发测试环境中,一定遇到有很多信息都是使用JSON串或者文本文件作为输入的。在没有JQ命令行工具之前,我们要从中获取真正的输入,大都把它复制到文本里头,然后使用文本编辑器进行加工整理。比如,提取用户名(username)、密码(password)、连接的url、证书(certificate)等。b73"上边的信息已经做过脱敏处理。我们使用jq就可以快速得到相关项的值。上边所有内容只是很基础的一部分使用。

iihero@优快云 1774

解析json数据

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

blog from zkp 959

Scala中解析json工具对比

1, 做少量文件解析,优先用json4s,因为json4s时基于Scala开发的,对scala使用场景支持更好2. 做大量数据的解析,追求序列化、反序列化速度时,考虑用fastjson,但是fastjson是基于java开发的,涉及自定义类的提取时,支持不好。所以,除非遇到性能提升问题,再用fastjson。可选工具:fastjsongsonjson4s(jackson的scala版本)lift-jsonspray-jsoncircleplay-json。

Code_LT的博客 2145

简单的JSON解析工具

自己做一个JSON校验工具

zhou_xiaozhou的博客 2211

libjson使用详解(linux和windows)

我长话短说: http://download.youkuaiyun.com/detail/rongxiaojun/6859823 从官网下的最新的libjson 在centOS 6.4下使用各种错误,“undifined reference to JSONNode”等。 上面是我经过修改后的库文件,解压后两文件:libjson.a 和 libjson.tar.bz2,把静态库libjson.a放到库

rongxiaojun的专栏 1万+

Java数据类型及类型转换

1、int和Integer有什么区别 int是8种基础变量之一,字节长度为4,。属于基础数据类型,它的创建不会在堆内存中开辟空间,一般是保存在栈内存中,可以进行算数加减乘除运算。 Integer是int的包装类,在java.lang包下,不属于基本数据类型,是一个类所以它不能执行加减乘除运算。在参数传递的时候,传递的是它代表的对象的一个引用。 2、各个数据类型的取值范围 int型数据字节长度为4,一共32位,因此取值范围为: -2^31 ~ 2^31-1 long型数据字节长度为8,一共64为,取值

Mr_Carrots的博客 521

JSON格式解析和libjson使用简介(cJSON)

JSON格式解析和libjson使用简介 摘 要: Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据格式:JSON与XML。本文主要介绍JSON格式的简单概念及JSON在Rss Reader中的应用。 JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下《Rss Reader实例开发之系统设计》一文。 Rss Reader实例

鳥巢 7003

几种常用的JSON解析工具的使用

目录 简介: (1)org.json的使用 (2)net.sf.json的使用 (3)json-simple的使用 (4)gson的使用 (5)jackson的使用 (6)fastjson的使用 简介: 现在越来越多的网站采用JSON来交换数据,在Json.org网站上,Java可以使用的解析Json的组件就有超过20种。 Json官网:http://json.org/ 页面...

淋雨一直走啊 3万+
上一篇: Struts2的基础UI标签
下一篇: Oracle教程(一)--基础操作
Double____C
博客等级 码龄8年 92粉丝 79原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值