iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java如何实现操作JSON的便捷工具类
  • 950
分享到

Java如何实现操作JSON的便捷工具类

javajson 2023-05-30 23:05:05 950人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关Java如何实现操作JSON的便捷工具类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:对于jsON数据格式的处理,自开发Java以来,已用过多种JSON的开源工具,用

这篇文章将为大家详细讲解有关Java如何实现操作JSON的便捷工具类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体如下:

对于jsON数据格式的处理,自开发Java以来,已用过多种JSON的开源工具,用得最好,也用得最High的恐怕要属Google的Gson了。

特别为它写了一个工具类,放入常备工具中,方便使用。下面是为GSON 1.5版本重写的工具类。

依赖包:

slf4j-api-1.6.0.jar
slf4j-log4j12-1.6.0.jar
log4j-1.2.15.jar
gson-1.5.jar

package my.tools;import java.lang.reflect.Type;import java.util.Collection;import java.util.Enumeration;import java.util.Iterator;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.reflect.TypeToken;import org.apache.commons.lang.StringUtils;public class JSONUtils {  private static final Logger LOGGER = LoggerFactory.getLogger(JSONUtils.class);    public static final String EMPTY_JSON = "{}";    public static final String EMPTY_JSON_ARRAY = "[]";    public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss SSS";    public static final double SINCE_VERSION_10 = 1.0d;    public static final double SINCE_VERSION_11 = 1.1d;    public static final double SINCE_VERSION_12 = 1.2d;    public static final double UNTIL_VERSION_10 = SINCE_VERSION_10;    public static final double UNTIL_VERSION_11 = SINCE_VERSION_11;    public static final double UNTIL_VERSION_12 = SINCE_VERSION_12;    public JSONUtils() {    super();  }    public static String toJson(Object target, Type targetType, boolean isSerializeNulls, Double version,      String datePattern, boolean excludesFieldsWithoutExpose) {    if (target == null) return EMPTY_JSON;    GsonBuilder builder = new GsonBuilder();    if (isSerializeNulls) builder.serializeNulls();    if (version != null) builder.setVersion(version.doubleValue());    if (StringUtils.isBlank(datePattern)) datePattern = DEFAULT_DATE_PATTERN;    builder.setDateFORMat(datePattern);    if (excludesFieldsWithoutExpose) builder.excludeFieldsWithoutExposeAnnotation();    return toJson(target, targetType, builder);  }    public static String toJson(Object target) {    return toJson(target, null, false, null, null, true);  }    public static String toJson(Object target, String datePattern) {    return toJson(target, null, false, null, datePattern, true);  }    public static String toJson(Object target, Double version) {    return toJson(target, null, false, version, null, true);  }    public static String toJson(Object target, boolean excludesFieldsWithoutExpose) {    return toJson(target, null, false, null, null, excludesFieldsWithoutExpose);  }    public static String toJson(Object target, Double version, boolean excludesFieldsWithoutExpose) {    return toJson(target, null, false, version, null, excludesFieldsWithoutExpose);  }    public static String toJson(Object target, Type targetType) {    return toJson(target, targetType, false, null, null, true);  }    public static String toJson(Object target, Type targetType, Double version) {    return toJson(target, targetType, false, version, null, true);  }    public static String toJson(Object target, Type targetType, boolean excludesFieldsWithoutExpose) {    return toJson(target, targetType, false, null, null, excludesFieldsWithoutExpose);  }    public static String toJson(Object target, Type targetType, Double version, boolean excludesFieldsWithoutExpose) {    return toJson(target, targetType, false, version, null, excludesFieldsWithoutExpose);  }    public static <T> T fromJson(String json, TypeToken<T> token, String datePattern) {    if (StringUtils.isBlank(json)) {      return null;    }    GsonBuilder builder = new GsonBuilder();    if (StringUtils.isBlank(datePattern)) {      datePattern = DEFAULT_DATE_PATTERN;    }    Gson gson = builder.create();    try {      return gson.fromJson(json, token.getType());    } catch (Exception ex) {      LOGGER.error(json + " 无法转换为 " + token.getRawType().getName() + " 对象!", ex);      return null;    }  }    public static <T> T fromJson(String json, TypeToken<T> token) {    return fromJson(json, token, null);  }    public static <T> T fromJson(String json, Class<T> clazz, String datePattern) {    if (StringUtils.isBlank(json)) {      return null;    }    GsonBuilder builder = new GsonBuilder();    if (StringUtils.isBlank(datePattern)) {      datePattern = DEFAULT_DATE_PATTERN;    }    Gson gson = builder.create();    try {      return gson.fromJson(json, clazz);    } catch (Exception ex) {      LOGGER.error(json + " 无法转换为 " + clazz.getName() + " 对象!", ex);      return null;    }  }    public static <T> T fromJson(String json, Class<T> clazz) {    return fromJson(json, clazz, null);  }    public static String toJson(Object target, Type targetType, GsonBuilder builder) {    if (target == null) return EMPTY_JSON;    Gson gson = null;    if (builder == null) {      gson = new Gson();    } else {      gson = builder.create();    }    String result = EMPTY_JSON;    try {      if (targetType == null) {        result = gson.toJson(target);      } else {        result = gson.toJson(target, targetType);      }    } catch (Exception ex) {      LOGGER.warn("目标对象 " + target.getClass().getName() + " 转换 JSON 字符串时,发生异常!", ex);      if (target instanceof Collection<?> || target instanceof Iterator<?> || target instanceof Enumeration<?>          || target.getClass().isArray()) {        result = EMPTY_JSON_ARRAY;      }    }    return result;  }}

关于“Java如何实现操作JSON的便捷工具类”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Java如何实现操作JSON的便捷工具类

本文链接: https://www.lsjlt.com/news/221977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java如何实现操作JSON的便捷工具类
    这篇文章将为大家详细讲解有关Java如何实现操作JSON的便捷工具类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:对于JSON数据格式的处理,自开发Java以来,已用过多种JSON的开源工具,用...
    99+
    2023-05-30
    java json
  • python调用ffmpeg命令行工具便捷操作视频示例实现过程
    目录最重要的事裁剪视频计算分段获取视频长度分段获取文件代码集成总结参考资料文 | 李晓飞 来源:Python 技术「ID: pythonall」 最近有了一个新任务,需要将...
    99+
    2024-04-02
  • Java怎么实现的文本字符串操作工具类实例
    这篇文章将为大家详细讲解有关Java怎么实现的文本字符串操作工具类实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java实现的文本字符串操作工具类。分享给大家供大家参考,具体如下:pac...
    99+
    2023-05-30
    java 工具类
  • Java对象和Json文本转换工具类的实现
    目录安装下载源码编译源码添加依赖Java 对象基本数据类型数组列表字典类Java 对象 转换为 Json 文本基本数据类型数组列表字典类Json 文本 转换为 Java 对象基本数据...
    99+
    2024-04-02
  • java中DateUtils时间工具类如何实现
    这篇文章将为大家详细讲解有关java中DateUtils时间工具类如何实现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下package com.example.administrat...
    99+
    2023-05-30
    java dateutils
  • Java操作pdf的工具类itext怎么处理
    这篇“Java操作pdf的工具类itext怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java操作pdf的工具类i...
    99+
    2023-06-30
  • java如何实现一个扫描包的工具类
    小编给大家分享一下java如何实现一个扫描包的工具类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言在很多的实际场景中,我们需要得到某个包名下面所有的类,比如我...
    99+
    2023-05-31
    java
  • Java操作pdf的工具类itext的处理方法
    目录一、什么是iText?二、引入jar三、iText常用类四、生成PDF步骤五、Java操作pdf的工具类itext六、更多的Java代码实例一、什么是iText? 在企业的信息系...
    99+
    2024-04-02
  • Java如何实现日期处理工具类DateUtils
    小编给大家分享一下Java如何实现日期处理工具类DateUtils,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下import java.sq...
    99+
    2023-05-30
    java dateutils
  • Java工具类如何实现音频音量提升
    这篇文章给大家分享的是有关Java工具类如何实现音频音量提升的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Maven依赖<dependency>    &nbs...
    99+
    2023-06-21
  • 基于Java如何实现进制转换工具类
    这篇文章主要介绍了基于Java如何实现进制转换工具类的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Java如何实现进制转换工具类文章都会有所收获,下面我们一起来看看吧。背景最近有个发送短信的功能,需要在短信...
    99+
    2023-07-05
  • 阿里云服务器批量管理工具高效便捷的云计算操作
    随着云计算的快速发展,越来越多的企业和个人开始使用阿里云服务器进行业务部署。然而,随着服务器数量的增加,如何高效、便捷地进行服务器管理成为了一个重要的问题。这时候,阿里云服务器批量管理工具就起到了重要的作用。 阿里云服务器批量管理工具是阿里...
    99+
    2023-10-29
    高效 阿里 管理工具
  • java实现的导出Excel工具类实例
    本文实例讲述了java实现的导出Excel工具类。分享给大家供大家参考,具体如下:ExcelExportUtil:package com.excel;import java.io.FileOutputStream;import java.i...
    99+
    2023-05-31
    java excel ava
  • Java中文件操作工具类fileUtil的示例分析
    小编给大家分享一下Java中文件操作工具类fileUtil的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package com.gc...
    99+
    2023-05-30
    java
  • Java日期操作方法工具类的示例分析
    这篇文章将为大家详细讲解有关Java日期操作方法工具类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java日期操作方法工具类,具体如下:package com.gclo...
    99+
    2023-05-30
    java
  • Java 对象深拷贝工具类的实现
    目录1. 使用场景1.1 场景一1.2 场景二2. Spring 中的对象拷贝3. 本工具类中的对象拷贝3.1 拷贝对象本身(单个)3.2 拷贝对象本身(批量)3.3 拷贝对象属性至...
    99+
    2024-04-02
  • 基于Java手写一个好用的FTP操作工具类
    目录前言windows服务器搭建FTP服务工具类方法代码展示使用示例前言 网上百度了很多FTP的java 工具类,发现文章代码都比较久远,且代码臃肿,即使搜到了代码写的还可以的,封装...
    99+
    2024-04-02
  • 新的Java访问mysql数据库工具类的操作代码
    这是之前软工课设我写的java访问mysql工具类,它经过了多轮的测试,应该能够适应大多数的操作需求。比之前大二写的更鲁棒,更易用。 package util; import ...
    99+
    2024-04-02
  • Java如何实现截图小工具
    这篇文章主要介绍“Java如何实现截图小工具”,在日常操作中,相信很多人在Java如何实现截图小工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现截图小工具”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • Java怎么实现的图片上传工具类
    这篇文章给大家分享的是有关Java怎么实现的图片上传工具类的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:package com.gcloud.common;import javax....
    99+
    2023-05-31
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作