在我使用Spring的Web應用程序中,我們想要使用自定義的JSON結構。 Spring缺省需要這樣一個POJO:Spring框架JSON序列化到數組而不是對象
public class Model {
private int id;
private String name;
public Model(){}
public Model(int id, String name){
this.id = id;
this.name = name;
}
}
,並把它變成這樣:
{"id":1, "name":"Bob"}
與我們的應用,我們希望把它變成這個:
[1, "Bob"]
我想要使用Spring的默認序列化邏輯來檢測Java類型(int,String,Collection等)並映射到適當的JSON類型,但只是將包裝對象更改爲數組而不是和對象使用fi視場。
這是迄今爲止我已經使用的序列化程序(將使用@JsonSerialize(using = Serializer.class))在模型中實現),但不希望重寫Spring已經實現的所有邏輯。
public class Serializer extends JsonSerializer<Model> {
@Override
public void serialize(Model value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartArray();
jgen.writeString(value.id);
.... other values ...
jgen.writeEndArray();
}
}
我如何可以掛接到預先存在的串行,使這個新的串行器將與任何POJO工作作爲默認的人做(而不只是Model類,但任何類似或子類,我們需要序列化數組)?這可能具有混合屬性,並且沒有特定的屬性命名約定。
我想避免爲每個不同的Model類(...其他值...)部分編寫自定義序列化程序。
串行器是正確的方法。 – 2015-03-18 21:33:35
啊,是的。我需要澄清,因爲我希望序列化程序不是特定於一個Model類,而是與任何POJO一起工作並相應地動態構建數組。謝謝! – Cameron 2015-03-18 21:53:45
因此,您需要'[1]',而不是'{「id」:[1]}'而不是'{「id」:1}'? – 2015-03-18 21:54:53