我正在使用Jersey创建一个REST-API。要做到这一点,我正在学习PluralSight课程。
我已经使用jersey-media-moxy依赖(v2.26)安装了Jersey 2.2。我将以下资源返回以解析为JSON:
@XmlRootElement
public class Playlist {
private int id;
private String naam;
private int eigenaarID;
private Boolean owner;
public void setData(int id, String naam, int eigenaarID) {
this.id = id;
this.naam = naam;
this.eigenaarID = eigenaarID;
if(eigenaarID == 0) {
owner = false;
} else {
owner = true;
}
}
@XmlElement(name="id")
public int getID() {
return id;
}
@XmlElement(name="name")
public String getNaam() {
return naam;
}
public Boolean getOwner() {
if(eigenaarID == 0) {
return false;
}
return true;
}
public ArrayList<Track> getTracks(){
return new ArrayList<Track>();
}
}
如果我输出XML(使用@Produces(MediaType.APPLICATION_XML)),则“getNaam”的属性会被正确地重命名为“name”而不是“naam”。当我输出JSON(@Produces(MediaType.APPLICATION_JSON))时,不仅我的属性没有被重命名,所以私有属性也被输出。有什么问题?
答案 0 :(得分:0)
答案 1 :(得分:0)
我最终使用了杰克逊。我使用此StackOverflow entry进行了设置。
我的MyApplication如下所示:
package com.weijland.spotitube;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("services")
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("org.glassfish.jersey.jackson.JacksonFeature");
}
}
我最终使用了这种依赖:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.2</version>
</dependency>