Java 在使用MOXy进行编组以规范json表示时,是否可以重命名@XmlPath注释元素?
我不确定这是否可能,因为它与@XmlPath本身的语义相矛盾,但如果是,请帮助我 我通过从API实现中调用一些外部API来获取jsonJava 在使用MOXy进行编组以规范json表示时,是否可以重命名@XmlPath注释元素?,java,json,moxy,for-xml-path,xmladapter,Java,Json,Moxy,For Xml Path,Xmladapter,我不确定这是否可能,因为它与@XmlPath本身的语义相矛盾,但如果是,请帮助我 我通过从API实现中调用一些外部API来获取json { “标题”:“阿甘正传”, “书面信用证”:{ “小说”:“温斯顿·格鲁姆”, “剧本”:“埃里克·罗斯” }, “导演”:“Robert Zemeckis”, “演员”:[“汤姆·汉克斯”、“丽贝卡·威廉姆斯”、“莎莉·菲尔德”], “发布日期”:“1994-06-07T00:00:00.000Z”, “生产商”:{ “制片人”:[“Wendy Finema
{
“标题”:“阿甘正传”,
“书面信用证”:{
“小说”:“温斯顿·格鲁姆”,
“剧本”:“埃里克·罗斯”
},
“导演”:“Robert Zemeckis”,
“演员”:[“汤姆·汉克斯”、“丽贝卡·威廉姆斯”、“莎莉·菲尔德”],
“发布日期”:“1994-06-07T00:00:00.000Z”,
“生产商”:{
“制片人”:[“Wendy Fineman”,“Steve Starkey”],
“联合制片人”:[“查尔斯·纽里斯”]
}
}
并将其映射到以下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,但在编组相同的POJO时面临问题。
尽管我的POJO结构不是嵌套的,但编组时它保留了接收到的json的原始嵌套结构,我的意思是它没有引用任何其他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"
}
}
那么,有什么办法解决这个问题吗
还有一件事,对于category属性,我想确定它的值,如果一个特定的json条目出现在接收到的json中,例如,如果接收到的json包含一个类似
"animationInfo": {
"studio" : "pixar",
"some extra info" : [],
"and some more" : {}
}
然后,类别应设置为“动画”。我需要为它再写一个XmlAdapter吗
谢谢你 Jackson中有一个名为@JsonUnwrapper的注释,但我在JAXB或MOXy中没有看到等效的注释Jackson中有一个名为@JsonUnwrapper的注释,但我在JAXB或MOXy中没有看到等效的注释