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
。