一般将对象序列化使用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;
    }
}

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

 

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐