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的通用类 的相关文章

  • 始终等待页面加载到 PageObjects 上

    因此 当出现问题时 我只是创建了一个简单的 selenium JBehave 代码 我将首先发布简化的代码 然后稍后解释我的问题是什么 所以这里我们有一个简单的 AbstractClass 它将在我的 PageObjects 上继承 此类仅
  • Java - 调整图像大小而不损失质量

    我有 10 000 张照片需要调整大小 因此我有一个 Java 程序来执行此操作 不幸的是 图像的质量损失很大 而且我无法访问未压缩的图像 import java awt Graphics import java awt AlphaComp
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 我可以使用 Selenium Webdriver 测试元素的顺序吗?

    有一个表单 其中有 3 个字段 具有 3 个不同的 ID fieldset div div fieldset
  • Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

    假设我有一个List
  • 不使用 length() 方法的字符串长度[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在不使用字符串的情况下找到字符串的长度length String类的方法 str toCharArray length应该管用 或者怎么
  • 获取 JSON 中的 HTML 以在 React 组件中呈现为 HTML

    试图找出如何让链接实际呈现为链接 现在 在我从 Json 文件中读取这行文本后 React 将超链接渲染为文字文本 而不将其渲染为链接 一些数据 json about John has a blog you can read a href
  • 有没有办法将 boost::json::serializer 切换为美化输出?

    Using boost json serializer如中的示例所示文档 快速查看 http vinniefalco github io doc json json usage quick look html以紧凑格式保存 json tre
  • 在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?

    有人能够在 SMX4 中的两个或多个捆绑包之间成功共享配置吗 我正在寻找的是这样的 有一个文件 SMX HOME etc myconfiguration cfg 使此配置 可用 以便使用 Spring dm 通过 OSGi 配置管理将其注入
  • 将 JSON 导出到环境变量

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

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

    Eclipse JUNO 版本有哪些 Eclipse 指标插件 我尝试了一些通用指标插件 但没有一个能够在 Eclipse 的 JUNO 版本中正常运行 差点忘了 我们正在使用 Java 作为编程语言 我想要诸如圈复杂度 代码行数 方法长度
  • 将一个整数从 C 客户端发送到 Java 服务器

    我使用此代码将一个整数从我的 Java 客户端发送到我的 Java 服务器 int n rand nextInt 50 1 DataOutputStream dos new DataOutputStream socket getOutput
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • Android - 从渲染线程内结束活动

    下午好 我不熟悉 android 中的活动生命周期 并且一直在尽可能地阅读 但我不知道如何以良好的方式解决以下问题 我有一个使用 GLSurfaceView 的活动来在屏幕上绘制各种内容 在这个 GLSurfaceView 的渲染线程中 我
  • 背景图像隐藏其他组件,例如按钮标签等,反之亦然

    如何解决此代码中组件的隐藏问题 代码运行没有错误 但背景图片不显示 如何更改代码以获取背景图像 使用验证方法时 它在validation 中创建错误 public class TEST public TEST String strm Jan
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • ANTLR 和 Eclipse(或任何像样的 IDE)

    我已经使用 ANTLRv3IDE 插件在 Eclipse 中使用 ANTLR 一段时间了 虽然它并不完美 而且有点过时 但它的工作相当不错 现在 我希望将我正在创建的另一个 DSL 切换到 ANTLRv4 然而 Eclipse 的支持似乎非

随机推荐

  • 校招真题练习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