2

我想要实现的是:

  • 我们有一个 JSON 对象流进来。
  • 我想从 JSON 重建一个 Java 对象。
  • 我想应用转换(例如更改字符串格式并在满足某些条件时拒绝对象,例如 'isToBeConsumed' == false 并且可能将层次结构从嵌套扁平化为线性)
  • 我希望能够将 JSON 对象的值存储到数据库中。

当一种新类型的 JSON 对象流出现时,我可以为每种类型的 Stream 运行 CREATE TABLE 但我不想做任何代码更改。

换句话说,我希望能够在配置文件中定义一个 Java 类。

{"studentName":"string", "studentRollNumber":"integer", "studentGrade":"integer", "studentPhoneNumber":"string"}

现在,如果第二个流像这样进来:

{"teacherName":"string", "teacherEmployeeId":"integer", "teacherPhoneNumber":"integer", "teacherAddress":"string"}

我不想更改代码。

我可以将可能性限制为 4 种基本数据类型。

我可能有这样的规则

{“excludeIf”:{“columnName”:“等级”,“条件”:“等于”,“值”:“10”}

但是现在让我们不要担心排除规则,而是关注如何从配置文件重建 JAVA 类,然后将 JSON 流反序列化为该类的对象。

我看到 Gson 2.0+ 提供了转换通用地图的功能https://stackoverflow.com/a/20442943/429218

我正在寻找更多在 Java 中动态构造类并将 JSON 流反序列化到其中的选项。

谢谢

4

1 回答 1

0

这似乎在运行时,应用程序不知道 JSON 格式,但需要找到值和键来创建表并将数据放入 db。在不知道结构的情况下,请参考Parsing Json in Java。这将使您了解以通用方式进行操作。但是,如果应用程序发现新的和不存在的东西,您需要使用 if 语句编写更多代码来自动创建表。然而,正如@Jorge Campos 所说,这是一个糟糕的设计。在现实世界中,应用程序将有一个合同,即客户端和服务器。以通用方式执行会影响垃圾收集的性能和大量 cpu 利用率。

于 2016-01-12T05:13:17.340 回答