在我使用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