无效的新ObjectID(id),但它是DB中的有效ID

时间:2014-07-21 01:06:07

标签: java json mongodb deserialization objectid

我试图在新的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,它可以工作!!

1 个答案:

答案 0 :(得分:0)

意外地我找到了答案,

.toString()添加引号,我需要使用.getAsString

Gson, JsonElement, String comparison in Java