相关疑难解决方法(0)

gson - 序列化任何类型的对象时如何包含类名属性

后来意识到我需要在我的应用程序中序列化对象时将类名称包含为属性.如果我为任何序列化的非基本对象添加了类名属性,那可能是最好的.

我看到这是Genson中使用该useClassMetadata方法的内置功能.但是我已经在我的项目中使用了gson,所以如果我坚持下去就会有所帮助.

这是我目前的尝试:

package com.mycompany.javatest;

import com.google.gson.*;
import java.lang.reflect.*;

public class JavaTest {

    public static class GenericSerializer implements JsonSerializer<Object>, JsonDeserializer<Object> {

        private static final String CLASS_PROPERTY_NAME = "class";

        @Override
        public JsonElement serialize(Object src, Type typeOfSrc,
                                     JsonSerializationContext context) {

            JsonElement retValue = context.serialize(src);
            if (retValue.isJsonObject()) {
                retValue.getAsJsonObject().addProperty(CLASS_PROPERTY_NAME, src.getClass().getName());
            }
            return retValue;
        }

        @Override
        public Object deserialize(JsonElement json, Type typeOfT,
                                  JsonDeserializationContext context) throws JsonParseException {

            Class actualClass;
            if (json.isJsonObject()) {
                JsonObject jsonObject = json.getAsJsonObject();
                String className = jsonObject.get(CLASS_PROPERTY_NAME).getAsString();

                try { …
Run Code Online (Sandbox Code Playgroud)

java json gson

7
推荐指数
3
解决办法
8481
查看次数

标签 统计

gson ×1

java ×1

json ×1