一般将对象序列化使用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;
}
}
在这个类里面就可以指定需要序列化的属性。