У меня есть два класса POJO, которые используют ObjectId и возвращаются моей службой REST:
public final class ProjectInfo
{
@JsonProperty(required = true)
private String name;
// other properties ...
@JsonProperty(required = true)
@JsonSerialize(using = ObjectIdSerializer.class)
private ObjectId id;
public ProjectInfo() {
}
public String getName() {
return name;
}
// Other getters/setters
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
}
и
public class BaseWebsiteInfo
{
@JsonProperty(required = true)
private String firstParagraphOfAboutMe;
// Other properties
@JsonProperty(required = true)
@JsonSerialize(using = ObjectIdSerializer.class)
private ObjectId id;
public BaseWebsiteInfo() {
id = new ObjectId();
}
// Other getters/setters
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
}
Я использую Dropwizard (v1.3.19) и dropwizard- чванство (v1.3.12-1). Моя конечная цель состоит в том, чтобы я хотел, чтобы мой сгенерированный swagger. json был моделью ObjectId, представляющей собой просто строку, например:
"ObjectId" : {
"type" : "string"
}
Однако я получаю следующее:
"ObjectId" : {
"type" : "object",
"properties" : {
"timestamp" : {
"type" : "integer",
"format" : "int32"
},
"machineIdentifier" : {
"type" : "integer",
"format" : "int32"
},
"processIdentifier" : {
"type" : "integer",
"format" : "int32"
},
"counter" : {
"type" : "integer",
"format" : "int32"
},
"time" : {
"type" : "integer",
"format" : "int64"
},
"date" : {
"type" : "string",
"format" : "date-time"
},
"timeSecond" : {
"type" : "integer",
"format" : "int32"
}
}
}
Я пытался использовать пользовательский JsonSerializer (мой класс ObjectIdSerializer) согласно этому посту Используя Jon go и Jackson 2, как десериализовать MongoDB ObjectId (представленный в String _id в POJO) в шестнадцатеричное Строковое представление?
Однако я не получаю никаких изменений в моей модели в swagger. json. У кого-нибудь есть идеи, как мне это сделать в Dropwizard?