我们通常对一个Json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值,而json-lib包中的JsonConfig为我们提供了这种功能,具体实现方法有以下几种。(1)建立JsonConfig实例,并配置属性排除列表,(2)用属性过滤器,(3)写一个自定义的 JsonBeanProcessor.
1. 实现JSONString接口的方法
public class Person implements JSONString {
private String name;
private String lastname;
private Address address;
// getters & setters
public String toJSONString() {
return "{name:'"+name+"',lastname:'"+lastname+"'}";
}
}
2.第二种方法通过jsonconfig实例,对包含和需要排除的属性进行方便的添加或删除
public class Person {
private String name;
private String lastname;
private Address address;
// getters & setters
}
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExclusions( new String[]{"address"});
Person bean = new Person("jack","li");
JSON json = JSONSerializer.toJSON(bean, jsonConfig);
3. 使用propertyFilter可以允许同时对需要排除的属性和类进行控制,这种控制还可以是双向的,也可以应用到json字符串到java对象
public class Person {
private String name;
private String lastname;
private Address address;
// getters & setters
}
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setJsonPropertyFilter( new PropertyFilter(){
public boolean apply(Object source/* 属性的拥有者 */ , String name /*属性名字*/ , Object value/* 属性值 */ ){
// return true to skip name
return source instanceof Person && name.equals("address");
}
});
Person bean = new Person("jack","li");
JSON json = JSONSerializer.toJSON( bean, jsonConfig )
4. 最后来看JsonBeanProcessor,这种方式和实现JsonString很类似,返回一个代表原来的domain类的合法JSONObject
public class Person {
private String name;
private String lastname;
private Address address;
// getters & setters
}
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonBeanProcessor( Person.class, new JsonBeanProcessor(){
public JSONObject processBean( Object bean, JsonConfig jsonConfig ){
if(!(bean instanceof Person)){
return new JSONObject(true);
}
Person person = (Person) bean;
return new JSONObject() .element( "name", person.getName()) .element( "lastname", person.getLastname());
}
});
Person bean = new Person("jack","li");
JSON json = JSONSerializer.toJSON( bean, jsonConfig );
- 浏览: 486414 次
- 性别:
- 来自: 北京
最新评论
-
sxlkk:
lin_li 写道请问你这里怎么操作的啊?tar xvf su ...
subversion-1.9.3 Linux服务器安装教程 -
lin_li:
请问你这里怎么操作的啊?tar xvf subversion- ...
subversion-1.9.3 Linux服务器安装教程 -
wzwahl36:
json转javabean工具 [url]http://www ...
JAVA解析JSON,json对象转为javabean -
wzwahl36:
json转javabean工具 [url]http://www ...
JAVA解析JSON,json对象转为javabean -
tianxinyang:
楼主谢谢了,
CXF开发webservice需要的最少jar包,CXF发布和调用客户端代码
相关推荐
文中提到使用JsonConfig来设置JsonPropertyFilter,这样可以在序列化过程中过滤掉不需要的属性或对象。这是一种更加精细的控制方式,可以避免在JSON中暴露不应该公开的数据。 5. Hibernate配置关系映射: 为了更好...
5. **过滤与格式化** JSON-lib 提供了 `PropertyFilter` 接口,可以用来控制哪些 JavaBean 属性会被包含在 JSON 或 XML 中。这可以通过 `JsonConfig` 配置实现。另外,`JSONSerializer` 的 `prettyPrint()` 方法...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输。在使用Hibernate这样的ORM框架时,由于其懒加载机制,可能会遇到JSON序列化时的死循环问题。这是因为CGLIB动态代理生成...
另外,通过设置`JsonConfig`对象,可以指定属性过滤器`PropertyFilter`,从而决定哪些属性应该被包含在JSON中。 7. **测试**:编写测试类,如`JsonlibTest`,使用JUnit进行单元测试,验证Java对象与JSON之间的转换...
可以通过`JsonConfig`类配置转换规则,例如定义自定义的`JsonValueProcessor`来处理特定类型的字段,或者使用`PropertyFilter`来过滤JSON序列化过程中不想包含的属性。 在实际应用中,除了JSON-lib之外,还有其他的...
在JavaScript中,`JSON.stringify()`方法还可以接受两个可选参数,用于格式化输出和过滤对象属性。例如: ```javascript var last = JSON.stringify(obj, null, 2); ``` 这将会创建一个带有缩进的JSON字符串,便于...
9. **JSONConfig实例代码**:配置JSON解析时,可能需要创建一个配置对象,比如`JSONConfig`,来设定解析和序列化的特定行为,例如忽略某些字段、处理日期格式等。 10. **JSONObject实例代码**:实际编程中,会涉及...
- **JSON格式校验**:FastJson提供了`JSONValidator`类,可以验证JSON字符串的合法性。 6. **性能优化** FastJson之所以性能出众,是因为它采用了优化的算法和数据结构。例如,使用了双引号池来减少字符串创建,...
FastJSON支持自定义转换规则,如日期格式化、枚举转换等: ```java JSONConfig config = new JSONConfig(); config.setDatePattern("yyyy-MM-dd"); String dateStr = JSON.toJSONString(date, config); ``` 2...
- 使用`@JSONField(serializeUsing=XXX.class, deserializeUsing=XXX.class)`注解,自定义字段的序列化和反序列化逻辑。 2. 数据过滤 - `JSON.parseObject(String jsonString, TypeReference<T> typeReference, ...
SpringBoot 定制化返回数据...SpringBoot 定制化返回数据的实现示例,可以满足我们在实际开发中对返回数据的定制化需求,解决一些常见的问题,例如定制化字段名、日期类型的输出格式、过滤敏感字段、避免 null 输出等。