我试图在新的ObjectID中从页面转换String ID,所以我可以使用它来工作person.getId();
页面发送一个String id,但要填充,我必须在ObjectID中转换它(或者它将打印“EXPECTED A OBJECT BUT WAS A STRING”)
所以我创建了一个反序列化来拦截jsonElement,然后再转到Person对象
@Override
public ObjectId deserialize(JsonElement jsElement, Type Type,
JsonDeserializationContext context) throws JsonParseException {
//the id that i receive is this one -> 53c9e605278cd4d23e1152bb
ObjectId obj = new ObjectId(jsElement.toString());
return obj;
}
通过这种方式我得到了这个错误:
java.lang.IllegalArgumentException: invalid ObjectId ["53c9e605278cd4d23e1152bb"]
但如果我以这种方式使用:
@Override
public ObjectId deserialize(JsonElement jsElement, Type Type,
JsonDeserializationContext context) throws JsonParseException {
//the id that i receive is this one -> 53c9e605278cd4d23e1152bb
ObjectId obj = new ObjectId("53c9e605278cd4d23e1152bb");
return obj;
}
它工作,为什么?如果它直接从JsonElement获取id =不工作,但如果我使用ctrl c + ctrl v,它可以工作!!
答案 0 :(得分:0)