春天& MongoCursor& Jackson JsonNode(数据库转换)

时间:2017-04-22 21:08:43

标签: java json spring mongodb jackson

我在解析从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}

然而,杰克逊的斜线和双引号让我失望,无法解析。我错过了什么吗?或者我是否必须实际添加这些斜线和在我的代码中引用使事情有效?目前正在获取请求双引号的解析错误。

1 个答案:

答案 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