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

随机推荐

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