繁体   English   中英

无效的新ObjectID(id),但其在数据库中的有效ID

[英]Invalid new ObjectID(id) but its a valid ID in the DB

我正在尝试从页面中以新的ObjectID转换String ID,因此我可以使用它person.getId();

该页面发送一个String ID,但是要填充,我必须将其转换为ObjectID(否则它将打印“ EXPECTED A OBJECT BUT WAS A STRING)

所以我创建了一个反序列化,它在进入Person对象之前拦截jsonElement

@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,它将起作用!

偶然地我找到了答案,

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

Gson,JsonElement,Java中的字符串比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM