json-lib——JsonConfig详细使用说明

在使用json-lib包中JSONObject.fromObject(bean,cfg)时,可能出现以下几种情况:

1、(防止自包含)转换的对象包含自身对象,或者对象A下面挂了对象B,对象B下面又挂了对象A,如果不设置JsonConfig,则那么会抛异常:"There is a cycle in the hierarchy!"

解决方法:

  在调用JSONObject.fromObject(bean,cfg)时,自定义JsonConfig:

JsonConfig cfg = new JsonConfig();
cfg.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

然后将cfg对象传入fromObject方法中,这样,对象B下面挂的对象A就会被置为NULL。

2、(Date类型转化)JavaBean出现Date格式时,转化成json时如果需要将Date转换为我们认识的“yyyy-MM-dd”格式,则需要自行创建时间转换器,并实现json-lib中的JsonValueProcessor接口,实现该接口中的两个方法(processArrayValue和processObjectValue):

 1     public class JsonDateValueProcessor implements JsonValueProcessor {
 2     private String format ="yyyy-MM-dd";
 3
 4     public JsonDateValueProcessor() {
 5         super();
 6     }
 7
 8     public JsonDateValueProcessor(String format) {
 9         super();
10         this.format = format;
11     }
12
13     @Override
14     public Object processArrayValue(Object paramObject,
15             JsonConfig paramJsonConfig) {
16         return process(paramObject);
17     }
18
19     @Override
20     public Object processObjectValue(String paramString, Object paramObject,
21             JsonConfig paramJsonConfig) {
22         return process(paramObject);
23     }
24
25
26     private Object process(Object value){
27         if(value instanceof Date){
28             SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
29             return sdf.format(value);
30         }
31         return value == null ? "" : value.toString();
32     }
33
34 }  

JsonDateValueProcessor

  cfg.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());

  这样,对象下面如果有Date类型,转化出来变为“yyyy-MM-dd”格式。

3、(字段过滤)如果需要在转化过程中去除某些字段,则需要定义一些Excludes字段,具体使用如下:

  String[] EXCLUDES = new String[]{"A","B","C"};

  cfg.setExcludes(EXCLUDES);

  这样,对象转化时,"A","B","C"会被去除,对象中这些字段转成json时会被删除。

4、(过滤器PropertyFilter使用)和3有点类似,但是PropertyFilter作用是为了过滤某些符合一些指定条件的属性,如:

cfg.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
return value == null;//value为null时返回true,返回true的就是需要过滤调的
}
});

这样,对象转化出来后,生成的 json 字符串只包含非空的值。

时间: 2024-11-10 08:15:10

json-lib——JsonConfig详细使用说明的相关文章

PCIE_DMA实例一:xapp1052详细使用说明

一:前言 很多和我一样初学pcie的硬件工程师都会遇到这样一个问题,看了不少pcie相关的资料,还是搞不清这玩意儿到底该怎么用.于是我们打开ISE的core_generator工具,生成了一个pcie的ip核,用modelsim仿真一下example design,仔细分析一下,好像对协议部分理解更深了.至于怎么用,呵呵…… 当然,多数硬件工程师都是有上进心的!于是我们上网找资料,发现了一个xilinx官方出品的demo:xapp1052.全称是Bus Master DMA Performanc

JSON lib 里JsonConfig详解

一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void testCycleObject() { CycleObject object = new CycleObject(); object.setMemberId("yajuntest"); object.setSex("male"); JsonConfig jsonCon

JSON 中JsonConfig的使用(转)

我们通常对一个Json串和Java对象进行互转时,经常会有选择性的过滤掉一些属性值,而json-lib包中的JsonConfig为我们提供了这种 功能,具体实现方法有以下几种.(1)建立JsonConfig实例,并配置属性排除列表,(2)用属性过滤器,(3)写一个自定义的 JsonBeanProcessor. 1. 实现JSONString接口的方法 public class Person implements JSONString {  private String name;  privat

json-lib之jsonConfig详细使用

一.防止包自含 在JSON-LIB中,要转换的对象包含自身对象时,会抛出异常There is a cycle in the hierarchy,解决办法: jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); 二.自定义要被转换的字段 config.setJsonPropertyFilter(new PropertyFilter() { @Override public boolean apply(Object

json lib 2.4及其依赖包下载

下载文件地址:https://files.cnblogs.com/files/xiandedanteng/json-lib-2.4%26dependencies_jars.rar 它包括 commons-beanutils-1.9.3.jar commons-collections-3.2.jar commons-lang-2.3.jar commons-logging-1.2.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar 这些库可以满足转化Java对

关于JSON.parse()方法的使用说明

JSON.parse() 方法用于将一个 JSON 字符串转换为对象. 语法 JSON.parse(text[, reviver]) 参数说明: text:必需, 一个有效的 JSON 字符串. reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数. 返回值: 返回给定 JSON 字符串转换后的对象. var obj=JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, &

MyEclipse 详细使用说明!

学习编程开发是件需要持之以恒的是,大家加油好好努力,早日成为变成精英. 第一部分MyEclipse的基本使用 一.提示:MyEclipse的透视图按钮:可以切换不同的透视图(位于右上角) 1.建立一个工程 ----File-new-project---选项含有Javaproject,webproject等等-输入工程名字如myproject,其他可以选择默认-完成 2.创建一个java文件 ---myproject-右键-new---SourceFolder(还有class,package,Fo

python的urllib2库详细使用说明

一直以来技术群里会有新入行的同学提问关于urllib和urllib2以及cookielib相关的问题.所以我打算在这里总结一下,避免大家反复回答同样的问题浪费资源. 这篇属于教程类的文字,如果你已经非常了解urllib2和cookielib那么请忽略本篇. 首先从一段代码开始, #cookie import urllib2 import cookielib cookie = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.H

XML和JSON的一个详细对比

1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准.XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输.XML 提供统一的方法来描述和交换独立于应用程序