1

我不确定这是否可能,因为它与@XmlPath 本身的语义相矛盾,但如果是,请帮我解决这个问题。

我通过从我的 API 实现中调用一些外部 API 来获取这个 json { "title": "Forrest Gump", "writingCredits": { "novel": "Winston Groom", "screenplay": "Eric Roth" }, "directedBy": "Robert Zemeckis", "casts": ["Tom Hanks", "Rebecca Williams", "Sally Field"], "releaseDate": "1994-06-07T00:00:00.000Z", "producedBy": { "producers": ["Wendy Finerman", "Steve Starkey"], "co-producers": ["Charles Newrith"] } }

并将其映射到以下 POJO,该 POJO 将作为资源从我自己的 API 返回

public class Film
{
 private String title;

 @XmlPath("writingCredits/screenplay/text()")
 private String writer;

 @XmlPath("directedBy/text()")
 private String director;

 @XmlPath("casts[0]/text()")
 private String actor;

 @XmlJavaTypeAdapter(DateUnmarshaller.class)
 @XmlPath("releaseDate/text()")
 private int releaseYear;

 @XmlPath("producedBy/producers[0]/text()")
 private String producer;

 private String category;

//Commented getters and setters to save space
}

在这里,我可以使用 MOXy 将必要的信息映射到我的 POJO,但在编组时遇到问题。虽然编组它保留了接收到的 json 的原始嵌套结构,但我的 POJO 结构没有嵌套,我的意思是它没有引用任何其他 POJO。当我将我的 POJO 编组为 json 时,我能得到这样的东西吗:

{
"title": "Forrest Gump",
"writer": "Eric Roth",
"director": "Robert Zemeckis",
"actor": "Tom Hanks",
"releaseYear": 1994,
"producer": "Wendy Finerman"
} 

但相反,它显示如下:

{
   "title": "Forrest Gump",
   "writingCredits": {
       "screenplay": "Eric Roth"
   },
   "directedBy": "Robert Zemeckis",
   "casts": "Tom Hanks",
   "releaseDate": 1994,
   "producedBy": {
       "producers": "Wendy Finerman"
   }
}

那么,有什么办法可以解决这个问题吗?

还有一件事,对于类别属性,如果接收到的 json 中存在特定的 json 条目,我想确定它的值,例如,如果接收到的 json 包含类似的 json 条目

"animationInfo": {
                   "studio" : "pixar",
                   "some extra info" : [],
                   "and some more" : {}
                 }

那么类别应设置为“动画”。我需要为它再写一个 XmlAdapter 吗?

谢谢..!

4

0 回答 0