fastjson格式化bean的简易属性过滤器

fastjson的bean属性过滤器

有的时候,我们在接口开发时,一个完整的bean会包含很多属性,但是前端接口只需要其中的某几个属性时,应该在对json的返回要进行精简。下面直接看代码

package com.base.config;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;

public class Student {
     private int id;
     private String name;
     private String addr;

     public Student(int id, String name, String addr) {
          super();
          this.id = id;
          this.name = name;
          this.addr = addr;
     }
     public int getId() {
          return id;
     }
     public void setId(int id) {
          this.id = id;
     }
     public String getName() {
          return name;
     }
     public void setName(String name) {
          this.name = name;
     }
     public String getAddr() {
          return addr;
     }
     public void setAddr(String addr) {
          this.addr = addr;
     }

     public static void main(String[] args) {
          Student s = new Student(1, "test", "银川市");
          SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Student.class, "id","name");//只输出需要的属性
          SimplePropertyPreFilter filter2 = new SimplePropertyPreFilter(Student.class, "id","addr");//只输出需要的属性
          System.out.println("filter \n"+JSONObject.toJSONString(s,filter));
          System.out.println("------------------------------------");
          System.out.println("filter2 \n"+JSONObject.toJSONString(s,filter2));
     }
}

程序运行结果

filter
{"id":1,"name":"test"}
------------------------------------
filter2
{"addr":"银川市","id":1}

这样能最大程度简化我们需要的bean属性,来减少不必要的数据量,提示响应速度。

也许json属性的输出序列不是你想要的[默认属性以字典序列排序],大部分时候序列并不是很重要,重要的是数据。

时间: 2024-07-30 18:24:54

fastjson格式化bean的简易属性过滤器的相关文章

FastJson序列化时过滤字段(属性)的方法

FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法. 方法一.FastJson的注解 1 @JSONField(serialize = false) 2 private String name; 最便捷,直接在实体的字段上加FastJson的注解serialize = false,转JSON字符串时就不会有该字段. 方法二.JAVA关键字 1 @JSONField(name = "AGE") 2 private

spring PropertyPathFactoryBean | 获取另一个Bean的某个属性值

一般来说,spring中的Dependency来自于另一个Bean,但是也有一些情况我们需要另一个Bean的某个属性,此时可以使用PropertyPathFactoryBean; eg: 继续次的Dog类: package fuckSpring.propertyEditor; public class Dog { private String name; private String type; private int age; public String getName() { return

Spring - bean的autowire属性(自动装配)

当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注入,如果A的id因为某种原因修改了,那么所有引用了A的bean的<ref/>标签内容都得修改,这时候如果使用autowire="byType",那么引用了A的bean就完全不用修改了.autowire到底都什么用?我们继续往下看. autowire的用法: <bean i

FastJson序列化时忽略特定属性

在之前的工作中,一直用jackson来处理json串转换的问题,有些时候我们经常有忽略某些属性的情况,个人比较习惯jackson的注解的方式,而且也是比较灵活的,分别提供了@JsonIgnoreProperties,@JsonIgnore等. 而FastJson中,并没有提供类似的方式,而是提供了各种filter机制来实现的,具体可以参考:https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E

spring 的配置 bean>>property>>name属性

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.or

Spring配置中 bean上的属性parent的作用

省去多余的父类配置,比如 事务管理: <bean id="basicTxProxy2" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager2

【转】Fastjson生成json时Null属性不显示

Fastjson生成json时Null属性不显示 举个例子 Map < String , Object > jsonMap = new HashMap< String , Object>(); jsonMap.put("a",1); jsonMap.put("b",""); jsonMap.put("c",null); jsonMap.put("d","wuzhuti.cn

spring中bean的作用域属性singleton与prototype的区别

1.singleton 当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例.换言之,当把一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例.这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例,这里要注意的是singl

fastjson将bean转成字符串时首字母变小写问题

一个项目需求要求返回值为JSON格式,且大多数字段是首字母大写,还有些是类似N_TX这样的格式,在输出这样的结果时遇到了问题,由于时间紧,就直接拷贝需要的结果字段建立JavaBean类,本以为最后直接调用JSON.toString(obj)返回结果即可,没想到返回值中自动将首字母变小写.查看fastjson源码发现关键在下面一段 public static List<FieldInfo> computeGetters(Class<?> clazz, Map<String, S