Java JSON 序列化 - 最佳实践

2023-11-25

我需要为某些对象实现 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
    }
}

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

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

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


您与这个图书馆有联系吗?谷歌Gson很受欢迎。我自己没有将它与泛型一起使用,但他们的首页说 Gson 认为对泛型的支持非常重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java JSON 序列化 - 最佳实践 的相关文章

  • 编译错误:Android Studio

    我正在尝试修改基于 IntelliJ 构建的现有 Android 项目 我已经搜索并尝试了很多东西 但我的错误仍然没有消失 Error 5 1 android apt compiler main D android tinynote app
  • 在 Java 中重置 Graphics2D 对象

    我正在用 Java 尝试 Graphics2D 但像往常一样 我被困住了 P 问题是 假设我有这个代码 Graphics2D g Graphics2D this getGraphics Inside a JFrame g rotate Ma
  • 定制法国号码格式

    我尝试为美国国家 地区使用自定义数字格式 到目前为止效果很好 Not something I want NumberFormat numberFormat0 NumberFormat getNumberInstance Locale US
  • Hamcrest 泛型地狱 #2:iterable With Size 给出错误“不适用于参数”

    在 hamcrest 中 1 3 RC2 没有 JUnit 依赖项 我使用失败iterableWithSize 我有一个 扩展 Iterator参数化为Content像这样EndResult
  • mvn dependency:analyze 结果不正确

    我一直在寻找一种工具 它能够向您显示未使用的依赖项 我很快就偶然发现了 Maven 命令mvn dependency analyze 这样做的问题是 它经常检测到 未使用的 依赖项 如果缺失 这些依赖项就会导致构建失败 这是优化项目的示例
  • 如何使用 log4j 自动记录类中调用的每个方法

    我有一个包含数据库调用的类 我通常希望使用 log4j 记录该类中调用的每个方法 带参数 logger debug foo id id initiated 可以自动执行此操作吗 也许通过在每个方法的开头使用某种注释而不是编写每个 logge
  • 使用 ScheduledExecutorService 安排每月任务

    我想在该月的某一天的特定时间安排一项任务 每次运行之间的间隔可以设置在 1 到 12 个月之间 在java中 可以使用ScheduledExecutorService以固定的时间间隔调度任务 既然一个月的天数不固定 那么如何实现呢 提前致谢
  • JTable AutoCreateRowSorter 将数字排序为字符串

    我有一个 JTable JTable table new JTable String colNames c1 DefaultTableModel model new DefaultTableModel Integer x new Integ
  • WSDL 表示中的枚举类型

    WSDL 表示如下
  • 如何提高 Guice 启动时的性能

    好吧 我知道我的计算不客观等等 但无论如何 我讨厌在执行单元测试时等待这么多时间 我的 guice swing 应用程序需要大约 7 秒来初始化 这是一个简单的 IRC 客户端 在那一刻 没有打开连接 我什至还没有调用任何 java io
  • 使用 javax.mail 和 CentOS 的邮件服务器

    我有一个 Java 程序 安装在一台旧的 Ubuntu 机器上 并使用 javax mail 发送邮件 然而 那台机器宕机了 我现在在新的 CentOS 机器上运行相同的 Java 应用程序 但是 当我尝试使用 mail smtp host
  • 序言中不允许引用

    请帮我找到这个异常的原因 我使用以下罐子 core renderer jar itext paulo 155 jar 第一个文档 xhtml lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE h
  • 如何在最短的时间内克隆java中的输入流

    有人可以告诉我如何克隆输入流 并花费尽可能少的创建时间吗 我需要多次克隆输入流以使用多种方法来处理 IS 我尝试了三种方法 但由于这样或那样的原因 事情不起作用 方法 1 感谢 stackoverflow 社区 我发现以下链接很有帮助 并将
  • java3d 中的面部着色

    使用java3d 如何不在每个顶点基础上着色 而是在每个面基础上着色 我尝试学习 java3d 但我生成的 Shape3d 看起来并不符合预期 我想用不同的颜色给不同的三角形着色 但我不知道该怎么做 纹理看起来有点大材小用 而且我根本没有掌
  • 如何在 Eclipse 中使用 Hibernate Tools 生成 DAO?

    我在用着 Eclipse Java EE IDE Web 开发人员 版本 Indigo 发布 使用 hibernate 工具 我对 Eclipse 中的 hibernate 很陌生 所以我学习如何配置 hibernate 并使用注释生成 P
  • 用于验证一个参数的多种类型和值的 json 架构

    请在这件事上给予我帮助 我尝试编写一个 json 模式来验证以下对象 json 对象 param value 可能的值 all 任意整数的数组 所以它是一个简单的 json 对象 其中包含一个变量 可以是字符串 all 也可以是任何整数数组
  • 如何将我的自定义相机应用程序设置为默认应用程序?

    如果我使用以下代码 Intent takePictureIntent new Intent MediaStore ACTION IMAGE CAPTURE startActivityForResult takePictureIntent 1
  • 用于将字符串与通配符模式进行匹配的递归函数

    所以我一整天都在试图解决这个作业 只是无法完成 以下函数接受 2 个字符串 第二个 不是第一个 可能包含 的 星号 An 是字符串的替换 空 1个字符或更多 它可以出现 仅在s2中 一次 两次 更多或根本不出现 它不能与另一个相邻 ab c
  • SAXParseException:找不到元素“定义”的声明

    我对 camunda 和 DMN 完全陌生 我试图在 spring boot 中运行 DMN 示例 链接在这里 https github com camunda camunda bpm examples tree master dmn en
  • gwt - 在 RPC 调用中使用 List

    我有一个 RPC 服务 方法如下 public List

随机推荐

  • 右移开头为零

    我正在尝试做一种左移 在开头添加零而不是一个 例如 如果我左移0xff 我明白了 0xff lt lt 3 11111000 但是 如果我右移它 我会得到 0xff gt gt 3 11111111 我可以使用任何操作来获得相当于左移的效果
  • 尝试部署到 heroku 时找不到文件(在本地工作)

    我正在尝试将我的应用程序部署到 Heroku 它可以在本地运行 但在网上却没有运气 我删除并重新安装了节点模块 我遇到了另一个与此非常相关的错误 文件未找到相同的名称等 我更改了相对路径 认为可以解决问题 但我没有从中得到任何结果 错误是
  • 在 char 指针上使用 strcpy 时程序中止? (在 char 数组上工作正常)

    我很困惑为什么以下不起作用 char f abcdef strcpy f abcdef printf s f char s ddd strcpy s 0 eee printf s s 在这两个例子中 strcpy 都收到了一个 char 但
  • 在Android Studio中集成ZXing

    我将开始解释我所做的所有步骤以及到底问题是什么 下载ZXing 2 2https code google com p zxing downloads list 解压zxing 2 2中的全部内容 下载并安装 Apache Anthttp w
  • Log4net - 在 AdoNetAppender 和 RollingFileAppender 之间动态切换 Appender

    我在我的 asp net 应用程序中使用 AdoNetAppender SQL 服务器 并且希望使用 RollingFileAppender 以防 SQL 出现任何连接问题 有没有办法配置为仅在 AdoNetAppender 出现问题时才使
  • 如何对列表列表进行排序并仅保留每个第一个元素的最大第二个元素?

    假设我有一些清单 lst 2 6 1 4 0 1 1 1 2 3 0 2 我想排序lst由第一个元素组成 对于每个子列表 保留按第一个元素分组时具有最大第二个元素的那个 所以结果将是 results gt gt gt 0 2 1 4 2 6
  • Python 中的 gRPC 服务器,带有 Unix 域套接字

    Python 中的 gRPC 支持是否允许我实现一个侦听 Unix 域套接字 而不是端口 的服务器 我正在使用 Python 3 5 3 和grpcio grpcio tools1 18 0 到目前为止 我还没有找到任何相关的例子 也没有找
  • 嵌入式框架 < iOS 8

    Ok so this guy had 没问题建筑并提交一个应用程序 针对 iOS 7 使用嵌入式框架 他指出 一个苹果工程师绰号 SevenTenEleven 在 Apple 开发论坛中提到以下警告 ld 警告 嵌入式 dylibs fra
  • java中如何获取浮点数的尾数?

    我试图获取浮点数的尾数 只是为了学习 但它没有按预期工作 比如说 5 3 的尾数是 53 对吗 我尝试了这段代码 System out println Float floatToIntBits 5 3f 0x7FFFFF 它打印了27262
  • 从后到前填充向量的最有效方法

    我正在尝试用一系列值填充向量 为了计算第一个值 我需要计算第二个值 这取决于第三个值等 let mut bxs Vec with capacity n for x in info let b match bxs last Some bx g
  • 从 getAdminArea() 获取州缩写;

    我尝试了两种不同的方法来尝试仅从 Address 类中获取城市名称以及州缩写 但没有成功 第一个是返回州 如 CA 92055 和邮政编码 第二次尝试返回完整的州名称 有什么快速的方法可以解决这个问题吗 第一次尝试 该州最终返回 CA 92
  • 在 Mac OSx 10.9.5 上升级到 Ruby 2.1.3

    今天我在 Mac OSx 10 9 5 上从 2 0 0 升级到 Ruby 2 1 3 事实证明 这比最初预期的要困难 因为我浪费了很多时间 所以我想我分享我的经验和解决方案 以防其他人也遇到问题 我安装了 xcode 开发人员工具 我这周
  • 在dompdf中添加带有页码的页眉和页脚

    我正在使用 Codeigniter 并成功实现了 dompdf 来生成 PDF 文件 现在我在生成的 PDF 中添加页眉和页脚时遇到问题 这是我的 dompdf helper 代码
  • .LESS 与 Razor 一起使用

    是否可以将 Razor View Engine ASP NET MVC 与 LESS 一起使用 类似于 SASS http lesscss org 对于 NET 因为他们都使用 blah 我想要实现的是创建 LESS css 文件 与 Ra
  • 实现指针转换运算符

    问题很简单 但我找不到解决方案 class foo public operator int return 5 foo a new foo int b a 是否有可能实现该行为 你不能 转换运算符需要是类的成员 但是foo 不是用户定义的类类
  • Maven - 为什么在“mvn clean”之后我需要在“mvn package”之前执行“Maven Update Project”?

    我正在做一些测试 我想了解为什么执行命令后mvn clean我需要在运行之前执行 Maven gt Update Project mvn package 否则在打包过程中我的依赖项之一会出现编译错误 看起来我的项目在运行 Maven gt
  • PostgreSQL 同一连接上的多个事务

    PostgreSQL 是否支持同一连接上的多个事务 我的意思不是嵌套事务 而是不相关的不同事务 如果您指的是 Java JTA 标准所要求的 交错事务 不 不支持这一点 看到这个JDBC 常见问题解答部分为此 为什么这并不是一个大损失 而且
  • 如何以编程方式打开 Chrome 扩展页面

    我是延期的新人 我想以编程方式打开 Chrome 扩展页面 例如 chrome extension njlkegdphefeellhaongiopcfgcinikh options html 当我单击网页按钮或链接时 我想打开特定的扩展选项
  • 教程中的错误:语法错误,意外的“:”,期望keyword_end

    我很抱歉问了一个可能是补救问题的问题 但在学习 Rails 时 我试图遵循本教程中的注释 http guides rubyonrails org getting started html configuration gotchas 我参加第
  • Java JSON 序列化 - 最佳实践

    我需要为某些对象实现 JSON 序列化 并且在与通用集合集成时遇到了问题 所有可序列化的类都实现这个接口 JSONObject来自this图书馆 interface JSONSerializable public JSONObject du