Ich habe eine ähnliche Frage zu Jackson dynamic property names. Ich muss den Ergebniseigenschaftsnamen gemäß dem Wert von var_name festlegen. Was kann ich im benutzerdefinierten Serializer tun, wenn überhaupt, um var_name zu übergeben?Dynamische Feldname mit Jackson
@NotBlank
private String var_name;
@NotNull
private Object result;
public DataObject(String var_name, Object result) {
this.var_name = var_name;
this.result = result;
}
@JsonProperty
@JsonSerialize(using = CustomSerializer.class)
public String getName() {
return var_name;}
@JsonProperty
@JsonSerialize(using = CustomSerializer.class)
public void setName(Object var_name) {
this.result = var_name;}
@JsonProperty
@JsonSerialize(using = CustomSerializer.class)
public Object getResult() {
return result;}
@JsonProperty
@JsonSerialize(using = CustomSerializer.class)
public void setResult(Object result) {
this.result = result;}
public class CustomSerializer extends JsonSerializer<Object> {
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeObjectField(***how can i insert var_name here***, value);
jgen.writeEndObject();
}
}
Beitrag Anruf:
@POST
public List<DataObject> search(){
List<DataObject> list = new ArrayList<DataObject>();
//some iteration function
//...
list.add(new DataObject(variable_string, variable_object));
//...
return list;
}
Wo variable_string
und variable_object
werden durch das Ergebnis einer Abfrage zu einer Wissensbasis definieren.
Wunsch json Antwort Beispiel:
[{
"Name": "John",
"Age": 69
},
{
"Name": "Jane",
"Gender": "Female",
"DateTime": "2017-6-12T15:09:25"
}]
Dank.
Ich würde wirklich vergessen, wie diese Frage nicht werden. Auch wenn es falsch formuliert oder zu grundlegend ist, hinterlasse zumindest einen Kommentar, warum du abstimmst, damit ich es verbessern kann. – wmw301
Ich denke, Sie sollten ein Beispiel für die Eingabe und das erwartete Ergebnis angeben. –
Danke. Ich habe das jetzt aufgenommen. – wmw301