Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将参数传递给JsonSerialize_Java_Jackson - Fatal编程技术网

Java 将参数传递给JsonSerialize

Java 将参数传递给JsonSerialize,java,jackson,Java,Jackson,我有一个发送JSON的rest服务。在发送之前,我想更改一个字段,例如将n添加到pricen是一个参数,来自客户端。如何在没有AOP和反射的情况下将n传递到JsonSerializer 您可以使用SimpleModule。 创建SimpleModule并手动创建序列化程序对象,并将参数传递给构造函数。 下面是一个例子 假设我们有如下用户模型类: package com; public class User { public String getName() { return nam

我有一个发送JSON的rest服务。在发送之前,我想更改一个字段,例如将
n
添加到price
n
是一个参数,来自客户端。如何在没有AOP和反射的情况下将
n
传递到
JsonSerializer

您可以使用
SimpleModule
。 创建
SimpleModule
并手动创建序列化程序对象,并将参数传递给构造函数。 下面是一个例子

假设我们有如下用户模型类:

 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();
    }
}
}

你的输出应该是这样的:

<User1 xmlns=""><name>Hello, nitin : value of n : 1111</name></User1>
你好,尼廷:n:1111的值
如果希望以json格式输出,请使用
ObjectMapper

<User1 xmlns=""><name>Hello, nitin : value of n : 1111</name></User1>