我有一个发送JSON的休息服务。在发送之前,我想更改一个字段,例如将n
添加到价格中。 n
是一个参数,来自客户端。如果没有AOP和反射,我如何将n
传递给JsonSerializer
?
答案 0 :(得分:0)
您可以使用SimpleModule
。
创建SimpleModule
并手动创建Serializer对象并将参数传递给构造函数。
这是示例
假设我们有User模型类,如:
package com;
public class User {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
private String name;
private int number;
}
这是自定义的Serializer类,如:
package com;
public class UserSerializer extends JsonSerializer<User>{
private String n;
public UserSerializer(String n){
this.n = n;
}
@Override
public void serialize(User user, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
if(user != null){
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("name", "Hello, "+user.getName()+" : value of n : "+n);
jsonGenerator.writeEndObject();
}
}
}
这是你的主要课程:
public class Application {
public static void main(String[] args) throws Exception{
User user = new User();
user.setName("nitin");
String n = "1111"; //this value comes from API
SimpleModule module = new SimpleModule();
module.addSerializer(User.class, new UserSerializer(n));
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.registerModule(module);
String xml = xmlMapper.writeValueAsString(user);
System.out.println(xml);
}
}
你的出局应该是:
<User1 xmlns=""><name>Hello, nitin : value of n : 1111</name></User1>
如果您想在json中输出,请使用ObjectMapper
。