我在解析从MongoCursor获得的字符串时遇到问题,无法使用JsonNode。我正在尝试让MongoCursor返回的Json与我的Spring SQL POJO一起工作,所以我可以将它插入到我的SQL数据库中。基本上这是一个数据库转换,而SQL端只是用于历史存储。我没有使用spring的mongo,因为这些字段与POJO有些不同。(MongoDB和SQL的架构略有不同)
目前,它通过使用模式匹配器/字符串拆分并替换HashMap它们,因此我可以获得每个字段的键和值对,然后将其插入到我的弹簧POJO中。我知道我也可以使用jackson的POJO工作,但被告知使用jsonNode作为更好的解决方案。必须有一些我不知道的东西。
在Jackson文档中,“json”字符串的格式为:
{\“color \”:\“Black \”,\“type \”:\“BMW \”}
但是,MongoCursor不会让我回归。使用光标,我得到类似的东西:
文件{{_ id = G8HQW9123,User = test}}
我使用字符串模式匹配器和replaceAll来减少到:
{_ id:G8G8HQW9123,User:test}
然而,杰克逊的斜线和双引号让我失望,无法解析。我错过了什么吗?或者我是否必须实际添加这些斜线和在我的代码中引用使事情有效?目前正在获取请求双引号的解析错误。
答案 0 :(得分:0)
我觉得你在这里错过了一些东西。
MongoCursor
会返回Document
个对象,而不是String
。
您是否正在调用Document.toString()
并使用String结果?
根本不需要你进行任何String解析。您应该能够从Mongo中获取Document
对象并在其上调用getter函数以获取所需的字段,这将保留其数据类型(字符串,数字,布尔值和日期),例如,检查BsonDocument
类Javadocs上的所有函数:https://mongodb.github.io/mongo-java-driver/3.4/javadoc/org/bson/BsonDocument.html