Java/JSON-通用反序列化程序

Java/JSON-通用反序列化程序,java,json,gson,generalization,Java,Json,Gson,Generalization,我努力实现的目标是: 我们有一个JSON对象流 我想从JSON重构一个Java对象 我想应用转换(如更改) 设置字符串的格式,并在满足以下条件时拒绝对象: 'isToBeConsumed'==错误,可能会将继承权从嵌套变为线性) 我希望能够将JSON对象的值存储到数据库中 当一种新类型的JSON对象流出现时,我可以为每种类型的流运行CREATETABLE,但我不想做任何代码更改 换句话说,我希望能够在配置文件中定义Java类 {“studentName”:“string”,“studentR

我努力实现的目标是:

  • 我们有一个JSON对象流
  • 我想从JSON重构一个Java对象
  • 我想应用转换(如更改) 设置字符串的格式,并在满足以下条件时拒绝对象: 'isToBeConsumed'==错误,可能会将继承权从嵌套变为线性)
  • 我希望能够将JSON对象的值存储到数据库中
当一种新类型的JSON对象流出现时,我可以为每种类型的流运行CREATETABLE,但我不想做任何代码更改

换句话说,我希望能够在配置文件中定义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+提供了转换通用地图的功能

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


感谢

这看起来像是在运行时,应用程序不知道JSON格式,但需要找到值和键来创建表并将数据放入数据库。请参阅。这将为您提供一种通用方式的想法。但是,如果应用程序发现某些错误,您需要使用if语句编写更多代码来自动创建表新的和不存在的。然而,正如@Jorge Campos所说,这是一个糟糕的设计。在现实世界中,应用程序将有一个契约,即客户端和服务器。以通用方式进行垃圾收集会影响性能和大量cpu利用率。

为每种类型动态创建表?为每种不同类型创建一个Java类json输入?这似乎是一个糟糕的设计…也许如果你解释你想做什么,你会得到更好的可能性。我将有3种类型的流进来…学生信息流,教师信息流和分数信息流。我可能有第四种类型在几个月后像学校事件流。我想建立一个系统,我可以为这个新流创建一个入职流程(我将手动参与其中,创建数据库表并更改一些配置)但是我不想为了合并这第四种类型的流而对代码进行更改。如果你已经知道你将收到什么,为什么要动态地这样做?这是一个糟糕的想法,不可能维护,而且代码也很糟糕。想象一下,不,你有三种类型的数据,但是你的代码将支持给定规则的任何东西。您系统中的每件事都必须基于您接收的对象进行动态处理。请不要这样做。创建您的域模型,序列化您的对象并使用,如果您以后必须更改代码,就这样做吧。这样会好几十万倍。这是一个诚实的建议。请重新考虑!学生和教师流是eholders,我完全不知道应该输入什么样的数据。我将作为一个平台发布我的应用程序,我需要不知道数据。这不是一个将自己局限于特定数据模型的选项。很难想象(读作实现)一个我可以完全控制发送内容的系统,当我想排除某个特定对象/行并将其持久化时定义规则,以便以后在其上运行SQL?好的,让我们想象一下,您能够创建这样一个系统(能够接收任何数据并接受它,并在表和类中控制它)!你用它做了什么?比如说在数百种不同的类型之后?我绝对肯定你没有充分考虑这种解决方案。没有一个系统能够接收任何类型的数据并为其创建动态java类,这将不可能管理和创建另一个功能基于您不知道的数据的特性!学生和教师流是占位符,我完全不知道应该输入什么样的数据。我将作为一个平台发布我的应用程序,我需要数据不可知。这不是一个将自己限制在特定数据模型的选项。很难想象(理解为实现)吗一个我可以完全控制发送内容的系统,当我想排除某个特定对象/行并将其持久化时定义规则,以便我以后在其上运行SQL?如上所述,这是可以实现的。请参考链接中的答案。您只需稍微调整代码。尝试制作一个示例,看看它是如何工作的。上面的链接pretty much告诉您如何从json中获取键和值,然后您需要使用这些键和值定义您的用例。这也是可能的。AnveshVejandla不是说应用程序需要找到键,而是假设所有需要的键都作为配置提供,如rjdthegreat所说,而不是provi不必要的按键。