我真的面临使用BSON API将String对象更改为ObjectId的挑战。我面临的错误:
Exception in thread "main" java.lang.IllegalArgumentException: invalid ObjectId [7887978]
at org.bson.types.ObjectId.<init>(ObjectId.java:130)
at org.bson.types.ObjectId.<init>(ObjectId.java:124)
at com.sample.common.Main.main(Main.java:8)
以下简单代码供参考:
import org.bson.types.ObjectId;
public class Main {
public static void main(String[] args) {
String number = "7887978";
ObjectId id = new ObjectId(number);
System.out.println(id);
}
}
我们如何解决此错误。有什么指针吗?
编辑:我使用的Maven依赖:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>2.3</version>
</dependency>
答案 0 :(得分:2)
从Bson API doc可以清楚地看到
ObjectId(String hexString)
从有效的24-byte hexadecimal string
表示构造一个新实例。
此处指出string
必须是有效的24-byte
hexadecimal
值。
值7887978
无效。您可以修改代码如下:
String id = "666f6f2d6261722d71757578";
if (ObjectId.isValid(id)) {
ObjectId objectId = new ObjectId(id);
System.out.println(objectId);
} else {
System.out.println("Invalid id");
}
或使用in build static API get()
创建新的对象ID ..
ObjectId objectId = ObjectId.get();
希望它可以帮到你!
答案 1 :(得分:0)
文档说:
IllegalArgumentException - 如果字符串不是有效的id
所以也许"7887978"
不是有效的身份