schema.org 在 Java 中反序列化

schema.org deserialize in Java

我正在尝试反序列化 schema.org 的对象,但每次我都会遇到复杂的问题。我不确定这是我的错还是从来没有人这样做过。我尝试了几个 schema.org 的项目,他们迟早都会遇到同样的问题(实际上是出于明显的原因)。问题出在 属性 和 "Author" 上。例如,烹饪食谱有作者。 Schema.org/Recipe 表示作者可以是个人或组织。两者都是schema.org的对象。

到现在为止都很简单。我获得了食谱的架构并将其传递给 jsonschema2pojo.org 并获得了我的 classes。 然后用 Gson

Gson gson = new Gson();
Recipe recipe = gson.fromJson(myString,Recipe.class);

myString 是我用来生成食谱 classes 的 json-ld。一旦我尝试从网上下载更多食谱,我立即遇到作者不是 schema.org 项目,而是一个简单字符串的模式。从这一点开始,我被封锁了。解析器被卡住了,就像 google 的 schemaorg-java 解析器一样。

我确实读到有人修改 class 以将作者作为对象,然后修改 getter 和设置器。应该为整个 Recipe class 制作反序列化器,但它必须仅对作者(和其他类似参数。

表现不同

没有更简单的方法在 java 中反序列化 schema.org 吗?我谷歌搜索错了吗?

如果您使用的是 GSON,则需要创建自定义解串器。最好的办法是读取 author 值的类型,如果它是一个字符串,则创建一个自定义 Author POJO,并将名称设置为字符串。

您选择了一种难以实现此解析器的语言。强类型语言将很难从松散类型语言反序列化数据。

最重要的是 schema.org 没有明确定义。另外,人们会搞砸他们的 schema.org 标记。由您决定如何处理它。您是否拒绝所有不完全符合数据的数据,或者您是否试图强制数据?

我很好奇你在做什么。它是网络服务吗?