「JSON对象互转工具」JSON转对象、对象转JSON

JSON对象互转工具

  • 一、Fastjson
  • 二、ObjectMapper
  • 三、Gson
  • 四、总结
  • 五、建议

一、Fastjson

Fastjson 是一款高性能的 JSON 解析库,提供了丰富而强大的方法来处理 JSON 数据。下面是一些常用的 Fastjson, 方法的详解:

  1. toJSONString(Object object):将 Java 对象转换为 JSON 字符串。
String jsonString = JSON.toJSONString(myObject);
  1. parseObject(String text, TypeReference<T> type):将 JSON 字符串解析为指定类型的对象
MyObject myObject = JSON.parseObject(jsonString, new TypeReference<MyObject>() {});
  1. parseArray(String text, Class<T> clazz):将 JSON 数组字符串解析为指定类型的 List 集合
List<MyObject> myList = JSON.parseArray(jsonArrayString, MyObject.class);
  1. toJSONBytes(Object object, SerializerFeature... features):将 Java 对象转换为 JSON 字节数组。
byte[] jsonBytes = JSON.toJSONBytes(myObject, SerializerFeature.WriteClassName);
  1. parseObject(byte[] bytes, Class<T> clazz, Feature... features):将 JSON 字节数组解析为指定类型的对象。
MyObject myObject = JSON.parseObject(jsonBytes, MyObject.class);
  1. toJSONString(Object object, SerializeConfig config, SerializerFeature... features):使用指定的配置和特性将 Java 对象转换为 JSON 字符串。
SerializeConfig config = new SerializeConfig();
String jsonString = JSON.toJSONString(myObject, config, SerializerFeature.WriteMapNullValue);
  1. toJSONStringWithDateFormat(Object object, String dateFormat, SerializerFeature... features):将 Java 对象转换为 JSON 字符串,并指定日期格式。
String jsonString = JSON.toJSONStringWithDateFormat(myObject, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat);
  1. parseObject(String text, Class<T> clazz, Feature... features):将 JSON 字符串解析为指定类型的对象,同时可以设置解析时使用的特性。
MyObject myObject = JSON.parseObject(jsonString, MyObject.class, Feature.IgnoreNotMatch);
  1. toJSONObject(Map<?, ?> map):将 Map 对象转换为 JSON 对象。
Map<String, Object> map = new HashMap<>();
JSONObject jsonObject = (JSONObject) JSON.toJSON(map);
  1. toJavaObject(JSON json, Class<T> clazz):将 JSON 对象转换为 Java 对象。
JSONObject jsonObject = JSON.parseObject(jsonString);
MyObject myObject = JSON.toJavaObject(jsonObject, MyObject.class);

以上是一些 Fastjson 中常用的方法,Fastjson 提供了更多的功能和方法,可根据实际需求选择适合的方法来进行使用。

二、ObjectMapper

ObjectMapper 是一个Java库,广泛用于将Java对象与JSON之间进行序列化和反序列化。它提供了一组强大而灵活的方法来处理JSON数据和Java对象之间的转换。 以下是一些常用的ObjectMapper方法:

  1. writeValueAsString(Object value):将Java对象转换为JSON字符串表示形式。
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(myObject);
  1. writeValue(File file, Object value):将Java对象转换为JSON并写入到指定文件中。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writeValue(new File("data.json"), myObject);
  1. readValue(String json, Class<T> valueType):将JSON字符串转换为Java对象。
ObjectMapper objectMapper = new ObjectMapper();
MyObject myObject = objectMapper.readValue(jsonString, MyObject.class);
  1. readValue(File file, Class<T> valueType):从文件中读取JSON并将其转换为Java对象。
ObjectMapper objectMapper = new ObjectMapper();
MyObject myObject = objectMapper.readValue(new File("data.json"), MyObject.class);
  1. configure(DeserializationFeature feature, boolean state):配置反序列化特性,例如忽略未知的属性。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  1. configure(SerializationFeature feature, boolean state):配置序列化特性,例如美化输出。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
  1. registerModule(Module module):注册自定义模块,例如Java 8日期时间模块。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());

这只是ObjectMapper提供的一些常用方法,还有其他更多功能和方法可供使用。使用ObjectMapper可以轻松地将Java对象与JSON之间进行转换,方便在Java应用程序中处理JSON数据。

三、Gson

Gson 是 Google 提供的一个强大的JSON序列化/反序列化库,提供了丰富的方法来处理对象与JSON之间的转换。以下是 Gson中一些常用的方法:

  1. toJson(Object src):将对象转换为 JSON 字符串。
Gson gson = new Gson();
String jsonString = gson.toJson(myObject);
  1. fromJson(String json, Class<T> classOfT):将 JSON 字符串转换为指定类型的对象
Gson gson = new Gson();
MyObject myObject = gson.fromJson(jsonString, MyObject.class);
  1. fromJson(JsonElement json, Class<T> classOfT):将 JsonElement 对象(例如 JsonObject 或者 JsonArray)转换为指定类型的对象。
Gson gson = new Gson();
JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);
MyObject myObject = gson.fromJson(jsonElement, MyObject.class);
  1. toJson(JsonElement jsonElement):将 JsonElement 对象转换为 JSON 字符串。
Gson gson = new Gson();
JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);
String jsonString = gson.toJson(jsonElement);
  1. fromJson(Reader reader, Class<T> classOfT):从 Reader 对象中读取 JSON,并将其转换为指定类型的对象。
Gson gson = new Gson();
Reader reader = new FileReader("data.json");
MyObject myObject = gson.fromJson(reader, MyObject.class);
  1. toJson(Object src, Type typeOfSrc):将对象转换为 JSON 字符串,并指定类型。
Gson gson = new Gson();
Type type = new TypeToken<List<MyObject>>() {}.getType();
String jsonString = gson.toJson(myList, type);
  1. fromJson(String json, Type typeOfT):将 JSON 字符串转换为指定类型的对象,以及处理泛型类型。
Gson gson = new Gson();
Type type = new TypeToken<List<MyObject>>() {}.getType();
List<MyObject> myList = gson.fromJson(jsonString, type);
  1. toJsonTree(Object src):将对象转换为 JsonElement 对象。
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(myObject);

这只是 Gson 中一些常用的方法,还有其他更多功能和方法可供使用。Gson 提供了灵活而强大的功能来处理对象与 JSON 之间的转换,根据需要选择适合您应用程序的方法进行使用。

四、总结

Fastjson、ObjectMapper 和 Gson 都是流行的 JSON 解析库,用于在 Java 中处理 JSON 数据。以下是对它们的总结:

  1. Fastjson

    • Fastjson 是一个高性能的 JSON 解析库,具有快速解析和序列化的特点。
    • 它支持将 Java 对象转换为 JSON 字符串,以及将 JSON 字符串转换为 Java 对象。
    • Fastjson 提供了丰富的功能和灵活的配置选项,可以满足各种复杂的 JSON 处理需求。
    • 它具有广泛的应用和活跃的社区支持,适用于对性能要求较高的场景。
  2. ObjectMapper(Jackson):

    • ObjectMapper 是 Jackson 库的核心类,提供了强大的 JSON 解析和生成功能。
    • 它可以将 Java 对象转换为 JSON 字符串,以及将 JSON 字符串转换为 Java 对象。
    • Jackson 是一个全面且功能丰富的库,提供了很多高级功能,如注解支持、树模型、数据绑定等。
    • 它在企业级应用和大规模项目中广泛使用,对复杂的 JSON 结构处理十分有效。
  3. Gson

    • Gson 是 Google 开发的一款简单易用但功能强大的 JSON 解析库。
    • 它可以将 Java 对象转换为 JSON 字符串,以及将 JSON 字符串转换为 Java 对象。
    • Gson 的设计目标是简洁易用,提供了简单的 API 和默认配置,减少了开发者的工作量。
    • Gson 具有良好的兼容性和稳定性,适合快速开发和小型项目。

总体而言,Fastjson 提供了极高的解析和序列化性能,适合对性能要求较高的场景。ObjectMapper(Jackson)是一个功能强大且全面的库,支持多种高级特性,适用于复杂的 JSON 处理需求。而 Gson 简单易用,适合快速开发和小型项目。根据实际需求和偏好,可以选择适合的库来处理 JSON 数据。

五、建议

建议使用FastJson的工具,因为ObjectMapper对于LocalDateTime的处理不是很优化,需要特殊的配置,直接使用MyObject myObject = JSON.parseObject(jsonString, new TypeReference<MyObject>() {});效果更换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多层感知机

模型 多层感知机原理上等同叠加多个全连接层&#xff0c;只不过在两个全连接层之间&#xff0c;会将第一个全连接层的输出加上激活函数&#xff0c;没有激活函数的话&#xff0c;多个全连接层等同一个全连接层效果&#xff0c;因为全连接层等同一个矩阵&#xff0c;两个矩阵相乘…

stable-diffusion-webui AutoDL 算力平台后台启动命令

AutoDL官网&#xff1a;AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL AutoDL 算力平台后台启动命令 COMMANDLINE_ARGS"--port 6006" REQS_FILE"requirements.txt" nohup python launch.py >> logs_launch.log 2>&1 & 备注&#x…

Android Dalvik 虚拟机(详细版)

经典好文推荐,通过阅读本文,您将收获以下知识点: 1.Java 语言在Android 上运行流程 2.虚拟机发展过程 3.Android Dalvik 模式 4.Android N 中dex2oat 原理以及模式 5.如何判断dex2oat 采用的相关参数 6.如何查看dex2oat 的log 7.什么时候进行dex2oat 8.手机反应慢的原因 9.解…

uni-app 经验分享,从入门到离职(一)——初始 uni-app,快速上手(文末送书福利1.0)

文章目录 &#x1f4cb;前言&#x1f3af;什么是 uni-app&#x1f3af;创建第一个 uni-app 项目&#x1f9e9;前期工作&#x1f9e9;创建项目&#xff08;熟悉默认项目、结构&#xff09;&#x1f9e9;运行项目 &#x1f4dd;最后&#x1f3af;文末送书&#x1f525;参与方式 &…

力扣1114.按序打印-----题目解析

题目描述 解析&#xff1a; class Foo {public int a 0;public Foo() {}public void first(Runnable printFirst) throws InterruptedException {// printFirst.run() outputs "first". Do not change or remove this line.printFirst.run();a;}public void second…

Ip-Limit: 轻量级注解式IP限流组件(二)

author: van , ggfanwentaogmail.comIp-Limit-Example: 轻量级注解式IP限流组件使用样例 项目简介 该项目为ip-limiter的使用示例项目。 ip-limiter地址&#xff1a; https://github.com/DDAaTao/ip-limiter 示例项目文件树 └─example├─handler│ └─BaseException…

基于OpenCV的红绿灯识别

基于OpenCV的红绿灯识别 技术背景 为了实现轻舟航天机器人实现红绿灯的识别&#xff0c;决定采用传统算法OpenCV视觉技术。 技术介绍 航天机器人的红绿灯识别主要基于传统计算机视觉技术&#xff0c;利用OpenCV算法对视频流进行处理&#xff0c;以获取红绿灯的状态信息。具…

甘特图 Dhtmlx Gantt

介绍 在一些任务计划、日程进度等场景中我们会使用到甘特图&#xff0c;Dhtmlx Gantt 对于甘特图的实现支持很友好&#xff0c;文档API介绍全面&#xff0c;虽然增强版的收费&#xff0c;但免费版的足以够用。 官网&#xff1a;https://docs.dhtmlx.com/gantt/ 安装dhtml gannt…

Android:ImageView xml方式配置selector 图片切换

1、在res/drawable目录下创建一个新的XML文件&#xff0c;比如selector_image.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"> <!-- 背景选择器 state_pre…

Linux6.16 Docker consul的容器服务更新与发现

文章目录 计算机系统5G云计算第四章 LINUX Docker consul的容器服务更新与发现一、consul 概述1.什么是服务注册与发现2.什么是consul 二、consul 部署1.consul服务器2.registrator服务器3.consul-template4.consul 多节点 计算机系统 5G云计算 第四章 LINUX Docker consul的…

react状态管理工具reduxjs/toolkit用法

安装 npm install reduxjs/toolkit 1.创建一个名为counterSlice.js的文件&#xff0c;用于处理计数器模块的状态&#xff1a; import { createSlice } from reduxjs/toolkit;const counterSlice createSlice({name: counter,initialState: {value: 0,},reducers: {increment…

PHP数组转对象和对象转数组

PHP数组转对象和对象转数组 <?php function array_to_object($arr){$obj new stdClass();foreach ($arr as $key > $val) {if (is_array($val) || is_object($val)) {$obj->$key array_to_object($val);} else {$obj->$key $val;}}return $obj; } function o…

MySQL - 1、数据库和表操作

CREATE DATABASE 创建一个名为"example_db"的数据库&#xff1a; CREATE DATABASE example_db;CREATE TABLE 创建一个名为"employees"的表&#xff0c;用于存储员工信息&#xff1a; CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age…

项目文档管理的基本指南

项目文档是一种关键的项目管理资源&#xff0c;它可以提供清晰度&#xff0c;保证参与项目的每个人都在同一页面上&#xff0c;从而确保项目按时、按预算完成。 本文将讨论项目文档的重要性、如何在项目中使用项目文档以及选择好合适的项目文档管理软件的技巧。 什么是项目文…

分布式微服务架构下网络通信的底层实现原理

在分布式架构中&#xff0c;网络通信是底层基础&#xff0c;没有网络&#xff0c;也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作&#xff0c;共同完成一件事情。 同样&#xff0c;在大规模的系统架构中&#xff0c;应用吞吐量上不去、网络存在通信延迟、我…

IDEA常用插件与配置

目录 常用插件 1.RestfulToolkit 2.MyBatisX (dao,xml层对应) 3.GitToolBox(git对应信息) 4.CodeGlance(代码滚动轮) 5.MyBatis Log Plugin(SQL log) 6.Any-Rule(正则表达式)

DevOps-Git

DevOps-Git 版本控制软件提供完备的版本管理功能&#xff0c;用于存储&#xff0c;追踪目录&#xff08;文件夹&#xff09;和文件的修改历史。版本控制软件的最高目标是支持公司的配置管理活动&#xff0c;最终多个版本的开发和维护活动&#xff0c;即使发布软件。 git安装 h…

K8S初级入门系列之十二-计算资源管理

一、前言 K8S集群中着这各类资源&#xff0c;比如计算资源&#xff0c;API资源等&#xff0c;其中最重要的是计算资源&#xff0c;包括CPU&#xff0c;缓存&#xff0c;存储等。管理这些资源就是要在资源创建时进行约束和限制&#xff0c;在运行时监控这些资源的指标&#xff0…

回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLA…

[SQL挖掘机] - 左连接: left join

介绍: 左连接是一种多表连接方式&#xff0c;它以左侧的表为基础&#xff0c;并返回满足连接条件的匹配行以及左侧表中的所有行&#xff0c;即使右侧的表中没有匹配的行。左连接将左表的每一行与右表进行比较&#xff0c;并根据连接条件返回结果集。 左连接的工作原理如下&am…