我需要为一些对象实现JSON序列化,并且在与泛型集合集成时遇到了问题.

所有可序列化类都实现此接口(JSONObject来自this库):

interface JSONSerializable{
    public JSONObject dump() throws JSONException //serializes object
    public void load(JSONObject obj) throws JSONException //deserializes object
}

我的基于java.util.list的集合的代码大致如下所示:

class AwesomeList<T extends JSONSerializable> implements JSONSerializable{
    private LinkedList<T> items = new LinkedList<T>();
    ...
    ...

    public JSONObject dump() throws JSONException {
        JSONObject result = new JSONObject();
        JSONArray a = new JSONArray();
        for(T i : items){
            a.put(i.dump());
        }
        result.put("items", a);
        return result;
    }

    public void load(JSONObject obj) throws JSONException{
        //here is my problem
    }
}

我的问题是:当我从JSONObject加载AwesomeList时,我需要创建它的元素,但这是不可能的,因为java禁止我编写

T newItem = new T();
newItem.load(obj);

我应该如何修改我完成这项任务的方法?

推荐答案

你和这个图书馆Bundle 在一起吗?Google Gson元很受欢迎.我自己没有在泛型上使用过它,但是他们的头版上说gson认为对泛型的支持非常重要.

Json相关问答推荐

如何在JQ过滤器文件中使用多行?

如何将响应数据保存到Flutter 中的共享首选项中

如何将文件夹组织的.json文件合并为一个JSON文件,文件夹/文件名作为键

在Snowflake中查询JSON时,属性名称是否支持绑定参数?

使用 Redis 作为键值存储

使用 JQ 获取 JSON 中的替代元素(输出:JSON 对象)

JOLT 转换仅过滤一个字段

jq: Select 何时来自另一个数组的值与此 json 中的值匹配

如何将动态复杂 json 解析为dart 对象或模型

使用 json_query 过滤嵌套列表中的元素

解析 JSON API 响应

如何让 JSON.NET 忽略对象关系?

如何从 HttpClient 解析 JSON 字符串?

如何从 mysql 数据库构建 JSON 数组

Python - 如何将 JSON 文件转换为数据框

使用 jq,将对象数组转换为具有命名键的对象

Json.NET 是否缓存类型的序列化信息?

使用 Codable 序列化为 JSON 时的 Swift 字符串转义

XML vs YAML vs JSON

使用 JSON.NET 序列化/反序列化对象字典