Java操作json的通用类

2023-11-17

package com.baiyyy.polabs.util.json;        
        
 import java.text.ParseException;        
 import java.util.ArrayList;        
 import java.util.Date;        
 import java.util.HashMap;        
 import java.util.Iterator;        
 import java.util.List;        
 import java.util.Map;        
        
 import com.baiyyy.polabs.util.DateUtil;        
        
 import net.sf.json.JSONArray;        
 import net.sf.json.JSONObject;        
 import net.sf.json.JsonConfig;        
 import net.sf.json.util.CycleDetectionStrategy;        
        
 /**     
  * 处理json的工具类,负责json数据转换成java对象和java对象转换成json     
  *      
  * @author yongtree     
  * @date 2008-11-22 上午10:47:13     
  * @version 1.0     
  */       
 public class JsonUtil {        
        
     /**     
      * 从一个JSON 对象字符格式中得到一个java对象     
      *      
      * @param jsonString     
      * @param pojoCalss     
      * @return     
      */       
     public static Object getObject4JsonString(String jsonString, Class pojoCalss) {        
         Object pojo;        
         JSONObject jsonObject = JSONObject.fromObject(jsonString);        
         pojo = JSONObject.toBean(jsonObject, pojoCalss);        
         return pojo;        
     }        
        
        
     /**     
      * 从json HASH表达式中获取一个map,改map支持嵌套功能     
      *      
      * @param jsonString     
      * @return     
      */       
     public static Map getMap4Json(String jsonString) {        
         JSONObject jsonObject = JSONObject.fromObject(jsonString);        
         Iterator keyIter = jsonObject.keys();        
         String key;        
         Object value;        
         Map valueMap = new HashMap();        
        
         while (keyIter.hasNext()) {        
             key = (String) keyIter.next();        
             value = jsonObject.get(key);        
             valueMap.put(key, value);        
         }        
        
         return valueMap;        
     }        
        
        
     /**     
      * 从json数组中得到相应java数组     
      *      
      * @param jsonString     
      * @return     
      */       
     public static Object[] getObjectArray4Json(String jsonString) {        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         return jsonArray.toArray();        
        
     }        
        
        
     /**     
      * 从json对象集合表达式中得到一个java对象列表     
      *      
      * @param jsonString     
      * @param pojoClass     
      * @return     
      */       
     public static List getList4Json(String jsonString, Class pojoClass) {        
        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         JSONObject jsonObject;        
         Object pojoValue;        
        
         List list = new ArrayList();        
         for (int i = 0; i < jsonArray.size(); i++) {        
        
             jsonObject = jsonArray.getJSONObject(i);        
             pojoValue = JSONObject.toBean(jsonObject, pojoClass);        
             list.add(pojoValue);        
        
         }        
         return list;        
        
     }        
        
        
     /**     
      * 从json数组中解析出java字符串数组     
      *      
      * @param jsonString     
      * @return     
      */       
     public static String[] getStringArray4Json(String jsonString) {        
        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         String[] stringArray = new String[jsonArray.size()];        
         for (int i = 0; i < jsonArray.size(); i++) {        
             stringArray[i] = jsonArray.getString(i);        
        
         }        
        
         return stringArray;        
     }        
        
        
     /**     
      * 从json数组中解析出javaLong型对象数组     
      *      
      * @param jsonString     
      * @return     
      */       
     public static Long[] getLongArray4Json(String jsonString) {        
        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         Long[] longArray = new Long[jsonArray.size()];        
         for (int i = 0; i < jsonArray.size(); i++) {        
             longArray[i] = jsonArray.getLong(i);        
        
         }        
         return longArray;        
     }        
        
        
     /**     
      * 从json数组中解析出java Integer型对象数组     
      *      
      * @param jsonString     
      * @return     
      */       
     public static Integer[] getIntegerArray4Json(String jsonString) {        
        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         Integer[] integerArray = new Integer[jsonArray.size()];        
         for (int i = 0; i < jsonArray.size(); i++) {        
             integerArray[i] = jsonArray.getInt(i);        
        
         }        
         return integerArray;        
     }        
        
     /**     
      * 从json数组中解析出java Date 型对象数组,使用本方法必须保证     
      *      
      * @param jsonString     
      * @return     
      * @throws ParseException     
      */       
     public static Date[] getDateArray4Json(String jsonString, String DataFormat)        
             throws ParseException {        
        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         Date[] dateArray = new Date[jsonArray.size()];        
         String dateString;        
         Date date;        
        
         for (int i = 0; i < jsonArray.size(); i++) {        
             dateString = jsonArray.getString(i);        
             date = DateUtil.parseDate(dateString, DataFormat);        
             dateArray[i] = date;        
        
         }        
         return dateArray;        
     }        
        
        
     /**     
      * 从json数组中解析出java Integer型对象数组     
      *      
      * @param jsonString     
      * @return     
      */       
     public static Double[] getDoubleArray4Json(String jsonString) {        
        
         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
         Double[] doubleArray = new Double[jsonArray.size()];        
         for (int i = 0; i < jsonArray.size(); i++) {        
             doubleArray[i] = jsonArray.getDouble(i);        
        
         }        
         return doubleArray;        
     }        
        
        
     /**     
      * 将java对象转换成json字符串     
      *      
      * @param javaObj     
      * @return     
      */       
     public static String getJsonString4JavaPOJO(Object javaObj) {        
        
         JSONObject json;        
         json = JSONObject.fromObject(javaObj);        
         return json.toString();        
        
     }        
        
     /**     
      * 将java对象转换成json字符串,并设定日期格式     
      *      
      * @param javaObj     
      * @param dataFormat     
      * @return     
      */       
     public static String getJsonString4JavaPOJO(Object javaObj,        
             String dataFormat) {        
        
         JSONObject json;        
         JsonConfig jsonConfig = configJson(dataFormat);        
         json = JSONObject.fromObject(javaObj, jsonConfig);        
         return json.toString();        
        
     }        
        
     /**     
      * JSON 时间解析器具     
      *      
      * @param datePattern     
      * @return     
      */       
     public static JsonConfig configJson(String datePattern) {        
         JsonConfig jsonConfig = new JsonConfig();        
         jsonConfig.setExcludes(new String[] { "" });        
         jsonConfig.setIgnoreDefaultExcludes(false);        
         jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);        
         jsonConfig.registerJsonValueProcessor(Date.class,        
                 new JsonDateValueProcessor(datePattern));        
        
         return jsonConfig;        
     }        
        
        
     /**     
      * 除去不想生成的字段(特别适合去掉级联的对象)+时间转换     
      * @param excludes 除去不想生成的字段     
      * @param datePattern     
      * @return     
      */       
     public static JsonConfig configJson(String[] excludes, String datePattern) {        
         JsonConfig jsonConfig = new JsonConfig();        
         jsonConfig.setExcludes(excludes);        
         jsonConfig.setIgnoreDefaultExcludes(true);        
         jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);        
         jsonConfig.registerJsonValueProcessor(Date.class,        
                 new JsonDateValueProcessor(datePattern));        
        
         return jsonConfig;        
     }        
        
 }   
   
   
 package com.baiyyy.polabs.util.json;        
        
 import java.text.SimpleDateFormat;        
 import java.util.Date;        
        
 import net.sf.json.JsonConfig;        
 import net.sf.json.processors.JsonValueProcessor;        
        
 /**     
  *      
  * @author yongtree     
  * @date 2008-11-22 上午10:54:19     
  * @version 1.0     
  */       
 public class JsonDateValueProcessor implements JsonValueProcessor {           
               
     private String format = "yyyy-MM-dd HH:mm:ss";           
           
     public JsonDateValueProcessor() {           
           
     }           
           
     public JsonDateValueProcessor(String format) {           
         this.format = format;           
     }           
           
     public Object processArrayValue(Object value, JsonConfig jsonConfig) {           
         String[] obj = {};           
         if (value instanceof Date[]) {           
             SimpleDateFormat sf = new SimpleDateFormat(format);           
             Date[] dates = (Date[]) value;           
             obj = new String[dates.length];           
             for (int i = 0; i < dates.length; i++) {           
                 obj[i] = sf.format(dates[i]);           
             }           
         }           
         return obj;           
     }           
           
     public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {           
         if (value instanceof Date) {           
             String str = new SimpleDateFormat(format).format((Date) value);           
             return str;           
         }           
         return value == null ? null : value.toString();           
     }           
           
     public String getFormat() {           
         return format;           
     }           
           
     public void setFormat(String format) {           
         this.format = format;           
     }           
           
 }   


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java操作json的通用类 的相关文章

  • 使用 YAML.load 解析 json 安全吗?

    我使用的是红宝石2 1 0 我有一个 json 文件 例如 测试 json item apple 1 banana 2 使用 YAML load 加载此文件是否安全 YAML load File read test json 我正在尝试加载
  • org.openqa.selenium.NoSuchSessionException:会话 ID 为空。调用 quit() 后使用 WebDriver?

    我已经进行了一些搜索 但仍然遇到同样的问题 我相信这可能是由于我的网络驱动程序是静态的造成的 我不太确定 在我的主课中 我包括了 BeforeTest and AfterTest BeforeTest包括根据我的 XML 文件启动新浏览器
  • NIO 直接缓冲区何时以及如何被释放?

    我有一个 C 库 需要一个临时缓冲区作为暂存空间 我正在考虑将直接字节缓冲区的地址传递给它 在最终释放缓冲区之前 是否允许虚拟机重新定位缓冲区 JNI 框架消失后 本机库将保留该指针 我的理解是 JNI 本地对象引用无法缓存 因为 VM 可
  • Java - 调整图像大小而不损失质量

    我有 10 000 张照片需要调整大小 因此我有一个 Java 程序来执行此操作 不幸的是 图像的质量损失很大 而且我无法访问未压缩的图像 import java awt Graphics import java awt AlphaComp
  • JTree ConvertValueToText 返回在更改时被截断

    我有一个自定义树实现convertValueToText 此实现取决于某些全局状态 如果返回的字符串比先前返回的字符串更长 实际上我认为更宽 因为以像素为单位触发它 则文本将被截断并用 填充 当重绘是由 取消 选择元素或某个元素引起时 情况
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 如何在 QueryDSL 中选择文字

    我目前正在开发一个使用 queryDSL 和 hibernate 的项目 其中它需要一个选择文字 按照发布的示例here https stackoverflow com questions 18691317 querydsl how to
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 使用 Haskell 将函数注入到 Java .class 文件中

    我使用 Haskell 编写了一个 Java 字节码解析器 它工作得很好 然而下一步让我完全难住了 我的 Haskell 程序需要修改 class 文件 以便在执行时 Java 程序打印 输入 此处的方法名称 在执行方法之前 并且 退出 此
  • 用于 Eclipse 的 Resharper [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 有没有办法将 boost::json::serializer 切换为美化输出?

    Using boost json serializer如中的示例所示文档 快速查看 http vinniefalco github io doc json json usage quick look html以紧凑格式保存 json tre
  • 将 JSON 导出到环境变量

    如果我有这样的 JSON hello1 world1 testk testv 我想将每个键值对导出为环境变量 如何通过 shell 脚本来做到这一点 例如 当我在终端上写时 echo hello1 world1应该打印其他键值对吗 注意 上
  • Java DNSLookup MX 记录列表。类似于 MXToolBox

    我正在构建一个程序来列出域的所有 MX 记录 起初似乎工作正常 但与在线工具进行比较后http mxtoolbox com http mxtoolbox com 有些域程序无法获取 MX 记录 而 MXToolbox 可以 我不确定原因是什
  • 如何在 Flask 中获取 POSTed JSON?

    我正在尝试使用 Flask 构建一个简单的 API 现在我想在其中读取一些 POSTed JSON 我使用 Postman Chrome 扩展进行 POST 我 POST 的 JSON 很简单 text lalala 我尝试使用以下方法读取
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • Mongodb - 为现有集合添加架构

    我的 MongoDB 中有一个包含 1300 万条记录的集合 不幸的是 当我创建这个集合时 没有为其创建模式 我想知道除了备份整个数据库 创建架构并上传所有数据之外 是否有任何方法可以添加 JSON 架构 您可以使用以下方法将 JSON 架
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • AWS SES模板html部分是多行

    我正在使用 AWS SES 按照文档发送电子邮件https docs aws amazon com ses latest DeveloperGuide send personalized email api html https docs

随机推荐

  • 校招真题练习008 浇花(百度)

    浇花 题目描述一个花坛中有很多花和两个喷泉 喷泉可以浇到以自己为中心 半径为r的圆内的所有范围的花 现在给出这些花的坐标和两个喷泉的坐标 要求你安排两个喷泉浇花的半径r1和r2 使得所有的花都能被浇到的同时 r1 2 r2 2 的值最小 输
  • GCC编译优化应用预编译头

    服务器编译优化记录 对项目编译优化过程中一些思路和脚本工具实现 对内存受限的编译环境有一些帮助 工具 https github com wangxiaobai dd GccPrecompiledHeader 环境 32G内存 16核 Mak
  • 入职华为外包一个月,我离职了

    我入职华为外包公司已经有一个月了 一开始我对这份工作充满了期待和热情 毕竟 华为是一家全球知名的科技公司 而我也有机会成为其中的一员 我相信这份工作会给我带来许多机遇和挑战 然而 随着时间的推移 我开始发现外包公司的工作条件并不如我所想象的
  • 指标实现层级_有了指标怎么用层次分析法建立模型?

    电脑 MATLAB软件 方法 步骤 建立层次结构模型 目标层 这一层次中只有一个元素 一般它是分析问题的预定目标或理想结果 因此也称为目标层 准则层 这一层次中包含了为实现目标所涉及的中间环节 它可以由若干个层次组成 包括所需考虑的准则 子
  • TQ210学习笔记:TQ210移植qt

    这几天搞了一块TQ210的板子 由于要求 需要移植qt进去 于是搞了近一个星期 现在终于看到了一点希望 开始找了一篇博客 我是按照他的步骤来 http emouse cnblogs com 首先是移植TSLIB 移植这个的原因是 因为电磁噪
  • C++进阶--对象指针

    对象指针定义形式 类名 对象指针名 例 Point a 5 10 Point ptr ptr a 通过指针访问对象成员 对象指针名 gt 成员名 例 ptr gt getx 就相当于 ptr getx this指针 隐含于类的每一个非静态成
  • 行为型模式 - 状态模式State

    状态模式的定义与特点 状态 State 模式的定义 对有状态的对象 把复杂的 判断逻辑 提取到不同的状态对象中 允许状态对象在其内部状态发生改变时改变其行为 状态模式是一种对象行为型模式 其主要优点如下 结构清晰 状态模式将与特定状态相关的
  • 算法设计与分析(期末复习重点)更新中

    第一章 算法设计基础 算法的五大特性 输入 输出 可行性 有穷性 确定性 1 输入 一个算法有零个或多个输入 2 输出 一个算法有一个或多个输出 3 可行性 算法描述的操作可以通过已经实现的基本操作执行有限次来实现 每步可执行 4 有穷性
  • React State Hooks的闭包陷阱,在使用Hooks之前必须掌握

    伴随着 React Hooks 的正式发布 因为其易用性以及对于逻辑代码的复用性更强 毫无疑问越来越多的同学会偏向于使用 Hooks 来写自己的组件 但是随着使用的深入 我们发现了一些 State Hooks 的陷阱 那么今天我们就来分析一
  • 蛇形走线的长度受控问题

    目录 序言 分析 结束语 序言 有一次 小编的layout同事问了一个问题 蛇形走线时是否需要控制绕线的长度 小编一时竟难以回答 不是这个问题有多复杂 只是 这个问题不容易量化 解释起来颇费周章 因此 有必要将其单独列为一个话题进行讨论 具
  • VMware Workstation 英文改中文界面

    在控制面板 时间和语言 语言 区域中设置中文简体 感谢
  • 使用PhotoShop制作蓝底证件照

    准备 白底照片 ps 步骤 1 打开ps将图片拖入 2 复制图层 3 选择快速选择工具 4 点击图片背景 可以看到背景被圈出 5 单击del删除 可以发现背景没有了 6 点击右下角圆圈 7 选择纯色 设置R0 G125 B255 8 完成
  • 数据库存储引擎及查询sql执行流程

    通过公开课学习的 记录一下 数据库主要存储引擎 myisam 支持表级别的锁 不支持事务 读写不能并发进行 插入和查询会锁表 但因为直接存储了行数 则执行count更快 但是加上条件就不行了 innodb 支持事务 支持行级锁表级锁两种粒度
  • CVE-2016-5159 脏牛内核提权

    Linux内核提权 脏牛提权漏洞 Linux内核的子系统在处理写入时复制至产生了竞争条件 恶意用户可以利用此漏洞来获得高权限 对只读内存映射进行访问 并且在提权的时候 杀毒软件并不会检测到 影响范围 Linux内核 gt 2 6 22 20
  • 利用外部程序对存储BIOS设置参数的CMOS RAM进行读取操作的可行性分析

    电脑的启动过程如下 机后主动执行BIOS程序 可以通过BIOS去设置CMOS 也可以不设置 然后BOIS会去识别操作系统引导设备的引导分区 一般也就是电脑里的硬盘中的第一个扇区 这个扇区中有分区表和主引导分区MBR 我们找到了MBR MBR
  • 【AcWing30】正则表达式匹配(动态规划)

    dp i j 表示 s 0 i 的字符串与p 0 j 的字符串是否匹配 那么有以下几个转换状态 1 p j 1 是字母 而且与 s i 1 相等 那么当前dp i j 是否匹配就依赖于dp i 1 j 1 2 p j 1 是 那么肯定与s
  • GoogleTest安装和搭建自动测试环境

    一 GoogleTest安装 1 下载GoogleTest源代码 sudo apt get install libgtest dev 2 编译源代码 1 安装完源代码后 继续在终端中输入 cd usr src gtest切换到源码存放的地方
  • 高斯分布的极大似然估计

    本文是关于 coursera 上 Robotics Estimation and Learning 课程的笔记 前面通过一个例子简单地介绍了极大似然估计的意思 现在来对高斯分布做极大似然估计 一维高斯分布 概率密度函数 一维高斯分布 Gau
  • dialog弹窗表单居中

    内容居中只需要设置样式就可以了 不用太复杂了 el dialog body display inline block
  • Java操作json的通用类

    package com baiyyy polabs util json import java text ParseException import java util ArrayList import java util Date imp