java - SpringData Elasticsearch JSON 数组到 Java 列表

标签 java json elasticsearch spring-data-elasticsearch

在版本2.2.0中使用spring-data-elasticsearch(+项目lombok)

我想要反序列化对 Java 类的 JSON 响应。除 JSON 数组之外的每个字段/对象都可以正常工作。应包含 JSON 数组中的 B 对象的 Java 列表“bs”保持为空。

带有数组的 JSON 响应如下所示:

        ...
        "_index": "someIndex",
        "_type": "A",
        "_id": "someId",
        "_score": 0,
        "_source": {
           ...
           "bs": [
              {
                 "number": "0000000001234",
                 "type": "03"
              },
              {
                 "number": "4008123694567",
                 "type": "13"
              }
           ],
           ...
        }
        ...

JSON 数组“bs”应反序列化为 Java 列表 bs。包含 B 列表的 Java 类 A 如下所示:

@Data
@Builder
@AllArgsConstructor(suppressConstructorProperties = true)
@NoArgsConstructor
@Document(indexName = "#{AIndexType.getIndexName()}", type = "#{AIndexType.getTypeName()}")
public class A implements Serializable {
    ...
    @Field(type = FieldType.Nested)
    private List<B> bs;
}

B 类看起来像这样:

@Data
@AllArgsConstructor(suppressConstructorProperties = true)
@NoArgsConstructor
public class B implements Serializable {

    private String number;

    private String type;
}

将 @Field 注释与 FieldType.NESTED 一起使用似乎不起作用/与不使用它有任何区别。 我是否必须编写一个自定义反序列化器(用于列表 bs)或者是否有其他方法可以使其工作?

最佳答案

请参阅上面的评论。

问题已解决,有一个链接(/错误使用属性)到另一个elasticsearch实例,该实例实际上没有B实例。

关于java - SpringData Elasticsearch JSON 数组到 Java 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630896/

相关文章:

json - 如何在自定义反序列化器 Spring Boot 中读取路径变量或 URL 参数

php - MySQL、JSON 和 Fullcalendar

c++ - 如何将 JSON 发布到 Web 服务器?

php - 在Elasticsearch中查找类似主题(重复提名)

elasticsearch - 2项合计后的ElasticSearch顺序

elasticsearch - 如何在centos 7中启动elasticsearch作为服务运行?

java - java中的ssh(在另一台机器上运行命令)

java - 无法执行目标 org.apache.maven.plugins :maven-release-plugin:2. 5.3:prepare

java - 使用 Kafka Streams 按 ID 和时间连接日志 - 无法刷新状态存储

java - 注入(inject)非 bean 属性的最佳实践