Mit Feder-data-Elasticsearch in Version 2.2.0 (+ Projekt lombok)SpringData Elasticsearch JSON Array zu Java Liste
ich eine JSON Antwort auf eine Java-Klasse deserialisieren möchten. Jedes Feld/Objekt außer einem JSON-Array funktioniert einwandfrei. Die Java-Liste "bs", die die B-Objekte aus dem JSON-Array enthalten soll, bleibt null.
Die JSON-Antwort mit dem Array wie folgt aussieht:
...
"_index": "someIndex",
"_type": "A",
"_id": "someId",
"_score": 0,
"_source": {
...
"bs": [
{
"number": "00000000",
"type": "03"
},
{
"number": "4008123694567",
"type": "13"
}
],
...
}
...
Der JSON-Array "bs", um die Java-Liste bs deserialisiert werden soll. Die Java-Klasse A, das eine Liste von Bs enthält wie folgt aussieht:
@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;
}
Klasse B wie folgt aussieht:
@Data
@AllArgsConstructor(suppressConstructorProperties = true)
@NoArgsConstructor
public class B implements Serializable {
private String number;
private String type;
}
Mit der @Field Annotation mit FieldType.NESTED nicht zu funktionieren scheinen/machen Sie einen Unterschied, es nicht zu benutzen. Muss ich einen benutzerdefinierten Deserializer (für die Liste bs) schreiben oder gibt es eine andere Möglichkeit, dies zum Laufen zu bringen?
Könnten Sie den Ausgang oder Stacktrace gehören, wenn Sie die JSON-Array deserialisieren? – Adonis
Danke für die Antwort. Das Problem ist gelöst, es gab eine Verbindung (/ falsche Verwendung von Eigenschaften) zu einer anderen elasticsearch-Instanz, die tatsächlich keine Instanzen von B. hatte –