1. 程式人生 > >fastjson(十一)使用SimplePropertyPreFilter過濾屬性

fastjson(十一)使用SimplePropertyPreFilter過濾屬性

需要根據不同的環境返回定製化返回屬性時,可以使用SimplePropertyPreFilter。

SimplePropertyPreFilter的程式碼介面如下:

public class SimplePropertyPreFilter implements PropertyPreFilter {      
    public SimplePropertyPreFilter(String... properties){
          this(null, properties);
    }

    public SimplePropertyPreFilter(Class<?> clazz, String... properties){
          // ... ...
} public Class<?> getClazz() { return clazz; } public Set<String> getIncludes(); public Set<String> getExcludes(); /** * @since 1.2.9 */ public int getMaxLevel(); /** * @since 1.2.9 */ public void setMaxLevel(int maxLevel) //... }

你可以配置includes、excludes(使用getIncludes()、getExcludes()方法獲得物件引用進行設定)。當class不為null時,針對特定型別;當class為null時,針對所有型別。

當includes的size > 0時,屬性必須在includes中才會被序列化,excludes優先於includes。

來看一下示例程式碼:

示例物件:

package json.fastjson.filter.globalFilter;

public class VO {
    private int id;
    private String name;

    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; } }

測試類:

package json.fastjson.filter.globalFilter;

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

public class TestGlobalFilter {

    public static void main(String[] args) {
        VO vo = new VO();
        vo.setId(123);
        vo.setName("flym");

        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, "name");

        System.out.println(filter.getExcludes());
        System.out.println(filter.getIncludes());

        System.out.println(JSON.toJSONString(vo, filter));
    }
}

輸出結果:

[]
[name]
{"name":"flym"}

相關推薦

fastjson使用SimplePropertyPreFilter過濾屬性

需要根據不同的環境返回定製化返回屬性時,可以使用SimplePropertyPreFilter。 SimplePropertyPreFilter的程式碼介面如下: public class SimplePropertyPreFilter implements

Salesforce學習之路Aura元件屬性<aura:attribute />

 1. <aura:attribute />語法 Aura元件屬性類似與Apex中類的成員變數(或者說Java中類的成員變數)。他們是元件在特定的例項上設定的型別化欄位,可以使用表示式語法從元件的標記內引用他們。 語法:<aura:attribute name="**" type=

Spark項目之電商用戶行為分析大數據平臺之JSON及FASTJSON

附加 處理 用戶行為分析 基於 大數據平臺 base IT 為什麽 init 一、概述 JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式

spring深入學習 IOC 之 屬性填充

doCreateBean() 主要用於完成 bean 的建立和初始化工作,我們可以將其分為四個過程: createBeanInstance() 例項化 bean populateBean() 屬性填充 迴圈依賴的處理 initializeBe

Vue入門---- 計算屬性實現排序功能

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <me

Java基礎:用Java8中Stream實現不同集合過濾

【前言】        從開源中國的對Java各個版本使用投票可以看出,目前Java8還是以67%的壓倒性優勢遙遙領先(Java 11 已正式釋出,你在使用 Java 的哪個版本?);眾所周知,Stream是Java8中的一大亮點,現在分享一下自己在工作中用它解決一個需求。

【連載】物聯網全棧教程-從雲端到裝置---呼叫阿里雲API,獲取物的屬性

物聯網全棧教程-從雲端到裝置(十一)一千千萬萬的物聯網裝置通過ALink協議接入到了雲端,它們不斷地按照ALink協議的規範向雲端彙報資料,同時也一直在等待伺服器下發一些資料並處理這些資料。關於物聯網裝置端如何搞定這些資料,零妖老哥會在下一篇文章中以一個型號叫做STM32F1

軟件工程作業

判定覆蓋 試用 表達 表達式 執行 分享 amp 邏輯 好處 一.白盒子測試有哪些方法,其中最嚴格的是什麽? 白盒測試的測試方法有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、路徑覆蓋和程序變異。 白盒測試法的覆蓋標準有邏輯覆蓋、

自然語言交流系統 phxnet團隊 創新實訓 項目博客

函數 num 所有權 初始 數組 sys ram 概率 計算過程 神經網絡的計算過程 神經網絡結構如下圖所示,最左邊的是輸入層,最右邊的是輸出層,中間是多個隱含層,隱含層和輸出層的每個神經節點,都是由上一層節點乘以其權重累加得到,標上“+1”的圓圈為截距項b,對輸入層外每個

openstack controller ha測試環境搭建記錄——配置neutron網絡節點

efault delete none _for set ext ranges tar edr 在網絡節點配置內核參數:vi /etc/sysctl.confnet.ipv4.ip_forward=1net.ipv4.conf.all.rp_filter=0net.ipv4.

打包壓縮命令

windows 打包工具 詳細信息 源文件 壓縮文件 打包壓縮命令:tar,zip,gzip,bzip2常用的打包工具:tar;壓縮工具:zip、gzip、bzip211.1.zip功能:兼容unix和windows,可以一次性壓縮多個文件語法:zip 壓縮後的路徑文件 需要壓縮的文件1

Storm入門Twitter Storm源代碼分析之CoordinatedBolt

業務 什麽 協議 ack 第一個 ng- rec 功能 這一 作者: xumingming | 可以轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明網址: http://xumingming.sinaapp.com/811/twitter-storm-code

OGG運維優化腳本-查詢維護類--操作選擇

ogg oracle goldengate 腳本 數據同步 shell 文件:ggedit路徑:$HOME/ggscript功能:該腳本用於選擇使用其他腳本通過alias別名初始化入.profile和.bash_profile文件,以edit指令方式使用#!/bin/bash echo

python selenium-webdriver 通過cookie登陸

circle gin == items tail login lis code 技術 上節介紹了瀏覽器的常用方法,涉及到了cookie的使用,本節介紹一下如何利用cookie進行登陸系統,這裏使用到了request模塊,我們首先利用request模塊,請求登陸地址進行登陸,

Nginx-- keepalived簡介

target 運行 多個 vrrp unzip ilo digest and style 1. 什麽是keepalived   基於VRRP(虛擬路由器冗余協議)來實現對web服務的高可用方案。   keepalived下載地址:http://download.csdn

Python爬蟲從入門到放棄之 Scrapy框架整體的一個了解

object 定義 roc encoding eth obi pipe pos 等等 這裏是通過爬取伯樂在線的全部文章為例子,讓自己先對scrapy進行一個整理的理解 該例子中的詳細代碼會放到我的github地址:https://github.com/pythonsite/

笨辦法學Python

可能 解釋 簡單的 自己的 style 技術 做了 splay img 習題 11: 提問 我已經出過很多打印相關的練習,讓你習慣寫簡單的東西,但簡單的東西都有點無聊,現在該跟上腳步了。我們現在要做的是把數據讀到你的程序裏邊去。這可能對你有點難度,你可能一下子不明白

javaIO流

java io流 深度遍歷演示:package day22;import java.io.File;public class FileTest { /** * 需求:對指定目錄進行所有內容的列出。(包含子目錄,前面學的都只能列出當前目錄內容,子目錄不行) * 也可以理解為深度遍歷。 */ p

python學習 文件和流

內存 無緩沖 abcd 連接 sss 文件操作 打開文件 while 3.5 11.1 打開文件   >>> f = open(r‘c:\text\somefile.txt‘), 第一個參數是文件名,必須有;第二個是模式;第三個參數是緩沖。   11.1

步學習Vue

head move 就會 基本 參數 mode onclick set stat 本篇繼續學習vuex,還是以實例為主;我們以一步一步學Vue(四)中講述的例子為基礎,對其改造,基於vuex重構一遍,這是原始的代碼: todolist.js ; (functio