org在Java中反序列化

org在Java中反序列化,java,gson,schema.org,Java,Gson,Schema.org,我试图反序列化schema.org的对象,但每次我都会面临一堵复杂的墙。我不确定这是我的错还是没人做过。我尝试了几个schema.org的条目,但它们迟早都会遇到相同的问题(事实上原因很明显)。问题在于像“作者”这样的财产。例如,烹饪食谱有作者。Schema.org/Recipe说作者可以是个人或组织。两者都是schema.org的对象 直到现在,这很容易。我得到一个配方的模式,并将其传递给我的类。 然后是格森 Gson gson = new Gson(); Recipe recipe = gs

我试图反序列化schema.org的对象,但每次我都会面临一堵复杂的墙。我不确定这是我的错还是没人做过。我尝试了几个schema.org的条目,但它们迟早都会遇到相同的问题(事实上原因很明显)。问题在于像“作者”这样的财产。例如,烹饪食谱有作者。Schema.org/Recipe说作者可以是个人或组织。两者都是schema.org的对象

直到现在,这很容易。我得到一个配方的模式,并将其传递给我的类。 然后是格森

Gson gson = new Gson();
Recipe recipe = gson.fromJson(myString,Recipe.class);
myString是我用来生成配方类的json ld。一旦我尝试从网上下载更多的菜谱,我会立即遇到模式,其中作者不是schema.org项目,而是一个简单的字符串。从这一点上说,我被阻挡了。解析器被卡住了,就像google的schemaorg java解析器一样

我确实读到有人修改类,将authors作为对象,然后修改getter和setter。应该为整个Recipe类创建反序列化器,但它必须仅对Author(和其他类似参数)有不同的行为


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

如果你使用GSON,你需要创建自定义反序列化程序。最好的方法是读取author值的类型,如果是字符串,则创建一个名为字符串的自定义author POJO

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

除此之外,schema.org没有很好的定义。另外,人们会搞砸他们的schema.org标记。这取决于你如何处理它。你是拒绝所有与数据不完全一致的数据,还是试图强制数据


我很好奇你在做什么。这是一个web服务吗?

我正在网络上搜寻已经有定义的项目,以便能够找到其他项目并自动定义它们。我放弃了java,现在我用python来做。我可能会回到java来做ML部分,不确定。TBH我认为JavaScript可能是一个更好的选择。JSON本身来自JS。