Jackson - 使用 JsonNode 类型时,对象未保存为基本 JSON

问题描述 投票:0回答:1

我正在使用 Spring Boot (Kotlin) 和 Mongo 将一些数据保存到我的数据库中。

我的 Mongo 集合是这样定义的:

@Document(collection = "events")
data class Event(
    val id: String,
    val payload: JsonNode
)

然后,当我保存它时,我正在使用:

objectMapper.convertValue(it.payload)

但是我在数据库中看到的有点奇怪,它就像某种实际的内存表示,而我想要的是简单的键和值:

"payload": {
        "_children": {
            "title": {
                "_children": {
                    "value": {
                        "_value": "Solutions green",
                        "_class": "com.fasterxml.jackson.databind.node.TextNode"
                    }
                },
                "_nodeFactory": {
                    "_cfgBigDecimalExact": false
                },
                "_class": "com.fasterxml.jackson.databind.node.ObjectNode"
            },
            "description": {
                "_value": "Earum et debitis officiis porro distinctio quasi et.",
                "_class": "com.fasterxml.jackson.databind.node.TextNode"
            },

该有效负载可以包含任何内容,因此通用 Json 因此使用 JsonNode。

上面插入的是什么以及我实际上如何保存基本的 json 表示。

如有任何帮助,我们将不胜感激。

谢谢。

json spring spring-boot kotlin jackson
1个回答
0
投票

你应该自定义转换器 我发现了这个https://github.com/spring-projects/spring-data-mongodb/issues/2557 它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.