SpringData Elasticsearch JSON数组到Java列表

时间:2017-03-06 16:37:59

标签: java json elasticsearch spring-data-elasticsearch

在2.2.0版(+ project lombok)中使用spring-data-elasticsearch

我想将JSON响应反序列化为Java类。除了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;
}

对FieldType.NESTED使用@Field注释似乎不起作用/不使用它。 我是否必须编写自定义反序列化程序(对于列表bs)还是有其他方法可以使其工作吗?

1 个答案:

答案 0 :(得分:0)

见上面的评论。

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