在版本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/