将实体类转换为json时过滤类中指定的属性

一般将对象序列化使用fastjson和Gson两种类

fastjson类的使用

使用fastjson主要有下面三种方法:

1. 实体类或集合转JSON串

String jsonString = JSONObject.toJSONString(实体类);
2.JSON串转JSONObject

JSONObject jsonObject = JSONObject.parseObject(jsonString);

3.JSON串转实体类

实体类 javaBean = JSON.parseObject(json, 实体类.class);
如果需要过滤实体类中的某个属性则可以使用下面几种方法:
一、使用transient关键字
把需要过滤掉属性使用transient关键字修饰,这样在调用JSON的toString方法时,被transient修饰的属性不会出现在最终的json字符串中,举例如下

private transient String id;
二、使用注解
还是以id属性为例,使用注解@JSONField(serialize=false),示例如下:

@JSONField(serialize=false)
private String id;

Gson的使用

首先使用

import com.advantech.mdm.dbmger.entity.User;

private final Gson gson;
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeHierarchyAdapter(User.class//需要序列化的实体类, new UserSerializer());
gson = gsonBuilder.create();
使用toJson方法实现实体类转json:
gson.toJson(deviceGroup);

创建ClientSerializer类:

package org.eclipse.leshan.standalone.servlet.json;

import com.advantech.mdm.dbmger.entity.User;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

import java.lang.reflect.Type;

public class UserSerializer implements JsonSerializer<User> {
    @Override
    public JsonElement serialize(User src, Type typeOfSrc, JsonSerializationContext context) {
        JsonObject element = new JsonObject();

        element.addProperty("name", src.getName());
        element.addProperty("apprepoaddress", src.getAppRepoAddress());
        element.addProperty("appdownloadaddress", src.getAppDownloadAddress());
        element.addProperty("vncip", src.getVncIp());
        element.addProperty("vncport", src.getVncPort());
        element.addProperty("bsprepoaddress", src.getBspRepoAddress());
        return element;
    }
}

在这个类里面就可以指定需要序列化的属性。

 

猜你喜欢

转载自blog.csdn.net/margin_0px/article/details/87629892