繁体   English   中英

Java / JSON-通用反序列化器

[英]Java / JSON - Generic Deserializer

我想要实现的是:

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

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

换句话说,我希望能够在Config文件中定义Java类。

{“ studentName”:“ string”,“ studentRollNumber”:“ integer”,“ studentGrade”:“ integer”,“ studentPhoneNumber”:“ string”}

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

{“ teacherName”:“ string”,“ teacherEmployeeId”:“ integer”,“ teacherPhoneNumber”:“ integer”,“ teacherAddress”:“ string”}

我不想更改代码。

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

我可能有类似的规则

{“ excludeIf”:{“ columnName”:“等级”,“ condition”:“等于”,“ value”:“ 10”}

但是,不必担心现在的排除规则,而将重点放在如何从配置文件重构JAVA类,然后将JSON流反序列化为该类的对象中。

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

我正在寻找更多选项来在Java中动态构造一个类并向其中反序列化JSON流。

谢谢

这似乎在运行时中,应用程序不知道JSON格式,但需要查找值和键来创建表并将数据放入db中。 请参考Java解析Json而不了解结构 这将为您提供以通用方式进行操作的想法。 但是,您需要使用if语句编写更多代码,以便在应用程序发现新的和不存在的内容时自动创建表。 但是,这是@Jorge Campos所说的糟糕的设计 在现实世界中,应用程序将具有合同,即客户端和服务器。 通用方式会影响性能以及大量垃圾回收的CPU使用率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM