2
我有一个发送JSON的休息服务。在发送之前,我想更改一个字段,例如将n
添加到价格。 n
是一个来自客户端的参数。如何在没有AOP和反射的情况下通过n
到JsonSerializer
?将参数传递给JsonSerialize
我有一个发送JSON的休息服务。在发送之前,我想更改一个字段,例如将n
添加到价格。 n
是一个来自客户端的参数。如何在没有AOP和反射的情况下通过n
到JsonSerializer
?将参数传递给JsonSerialize
你可以用SimpleModule
做。 创建SimpleModule
并手动创建Serializer对象并将参数传递给构造函数。 这里是例子
让我们说,我们有用户模型类,如:
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;
}
这是自定义的序列化器类,如:
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
。