这个问题与 Java API / 驱动程序有关,但也可能与其他语言的 Mongo 接口有关。我是 Mongo 的新手并且做了一些假设,所以如果我弄错了,请纠正我。我找到了很多文档,参考资料描述了在给定如下结构的情况下创建 DBObject:
{
foo: "bar",
baz: {
x : { lorem: "Ipsum" },
y: { dolor : "sit amet" }
}
}
假设上述对象存在(未更改)在名为foo.json
. 现在,据我了解,上面的内容是一个 JavaScript对象文字(不是有效的 JSON)。正确的?但是,这是在 Mongo 文档中称为“JSON”的表单。
无论如何,在我的测试中,我将foo.json
文件读入字符串并使用(我相信)相当标准的约定对其进行解析:
String fooString = readFile("foo.json");
Object o = com.mongodb.util.JSON.parse(fooString);
DBObject dbObj = (DBObject) o;
这工作得很好。现在,由于foo.json
不是有效的 JSON,我假设我可以使用类似的 JavaScript 对象形式:
{
foo: 'bar',
baz: {
x : { lorem: 'Ipsum' },
y: { dolor : 'sit amet' }
}
}
好的,很好,这似乎有效。虽然奇怪的是,在 Mongo shell 中,它似乎是用双引号存储的。既然这样行得通,我又做了一个假设,即我能够处理带有转义单引号的 JavaScript 对象表单:
{
foo: 'bar',
baz: {
x : { lorem: 'Ipsum. Isn\'t working' },
y: { dolor : 'sit amet' }
}
}
但是,当我尝试解析这个对象(使用com.mongodb.util.JSON.parse(fooString)
)时,com.mongodb.util.JSONParseException
会抛出 a 。不应该支持所有 3 种形式吗?
注意:我使用的是 org.mongodb:mongo-java-driver:mongo-java-driver:2.11.2 。
提前感谢您的任何/所有帮助。