当前位置: 首页 > 知识库问答 >
问题:

如何将JSON与动态键映射到Spring Data MongoDB实体上?

鲍建业
2023-03-14

所有人?

    {
    "Recife": {
        "coordenadas": {
            "upperLeft": {
                "x": 0,
                "y": 1000
            },
            "bottomRight": {
                "x": 600,
                "y": 500
            }
        }
    }
}

{
    "Cuiaba": {
        "coordenadas": {
            "upperLeft": {
                "x": 0,
                "y": 1000
            },
            "bottomRight": {
                "x": 600,
                "y": 500
            }
        }
    }
}

{
    "Santos": {
        "coordenadas": {
            "upperLeft": {
                "x": 0,
                "y": 1000
            },
            "bottomRight": {
                "x": 600,
                "y": 500
            }
        }
    }
}
@Id
private String id;

@Field
private Map<String, Cidades> map;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public Map<String, Cidades> getMap() {
    return map;
}

public void setMap(Map<String, Cidades> map) {
    this.map = map;
}

共有1个答案

叶德本
2023-03-14

不,你不能。如果您想将这些文档映射到对象,您应该有静态键。这里可能的解决方案是使用简单的操作检索文档:

Iterable<BasicDBObject> objects = mongoOperations.find(query, BasicDBObject.class, "collection");

然后手动将其转换为对象。

objects.stream()
   .map(obj -> new Entity(...)
   .collect(Collectors.toList()); 
 类似资料:
  • 问题内容: 我的实体是这样的: 现在,我想将此newPerson对象映射到这样的JSON对象中, 注意:以上仅是示例。 我需要的是,我需要在序列化时自定义Key。默认情况下,它以属性名称为键。我无法更改属性名称。这该怎么做? 另外,是否可以更改JSON obj中出现的键/值对的顺序? 问题答案: 您需要将属性添加到您的类和属性。套装的属性到您的自定义属性名称和属性属性定义的顺序。 然后,您可以执行

  • 问题内容: 我将开始一个使用Spring和Hibernate管理的REST应用程序项目。 我知道Spring允许您从HTTP Request(带有注释)中获取Java对象。如果此Java对象也是Hibernate实体,是否有冲突?嵌套对象是否起作用(如关系)? 问题答案: 我们正在使用这种方法来简化设计并摆脱许多dto(我们滥用它们太多了)。基本上,它对我们有用。 但是,在我们的REST模型中,我

  • 问题内容: 我的PostgreSQL数据库(9.2)中有一个表,其中的列类型为JSON。我很难将此列映射到“ JPA2实体”字段类型。 我尝试使用String,但是当我保存实体时,出现一个异常,即它无法将字符转换为JSON。 处理JSON列时使用的正确值类型是什么? 一个简单的解决方法是定义一个文本列。 问题答案: 请参阅PgJDBC错误#265。 PostgreSQL过于严格,对数据类型转换非常

  • 我是golang的新手,正在尝试解析来自web服务的一些响应,响应看起来像这样: 您可以看到每个元素都有一个键“数据”和“类型”(必须),但不同的“类型”会带来不同的“数据”字段。 你能建议一种有效的方法来构建这种对Golang结构的响应吗? 谢谢你。

  • 我正在尝试使用AutoMapper在LLBLGen实体和DTO之间创建映射。 我的DTO如下所示: ParentEntity包含一个与DTO列表同名的ChildCollection和一个Id(需要忽略其他LLBL字段)。因此,当ParentEntity映射到父d to时,它也应该将ChildCollection映射到一个子列表。 这就是我到目前为止得到的: 这会导致Id被映射,但List的计数为0

  • 我有下面的结构,我想用MapStruct映射这个。 下面是mapstruct为toDTO方法生成的实现 下面是mapstruct为toEntity方法生成的实现 我的问题是方法只在文本不为空时设置注释。但是方法不检查空文本或空文本。因此,如果我在DTO中获得,它将创建一个新的comment对象并将文本设置为null。如何避免这一点?有人能解释一下这种行为并建议我正确的做法吗?谢了!