Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
将JSON转换为特定格式_Json_Spring_Spring Boot_Jackson Databind - Fatal编程技术网

将JSON转换为特定格式

将JSON转换为特定格式,json,spring,spring-boot,jackson-databind,Json,Spring,Spring Boot,Jackson Databind,我有一个Java对象,并试图将其转换为特定的JSON格式 public class Audit { String auditId; String auditData; } 上面的对象需要转换为下面的JSON格式 { "event":"auditId=100,auditData=purchase order" } 我们如何使用Jackson解析器转换上述格式您需要为Audit类编写自定义序列化程序 public class AuditSeri

我有一个Java对象,并试图将其转换为特定的JSON格式

    public class Audit {
       String auditId;
       String auditData;
    }
上面的对象需要转换为下面的JSON格式

{
    "event":"auditId=100,auditData=purchase order"
}

我们如何使用Jackson解析器转换上述格式

您需要为
Audit
类编写自定义序列化程序

public class AuditSerializer extends StdSerializer<Audit> {

    public AuditSerializer() {
        super(Audit.class);
    }

    protected AuditSerializer(Class<Audit> auditClass) {
        super(auditClass);
    }

    @Override
    public void serialize(Audit audit, JsonGenerator gen, SerializerProvider provider) throws IOException {
        gen.writeStartObject();
        String key = "event";
        String value = String.format("auditId=%s,auditData=%s", audit.auditId, audit.auditData);
        gen.writeStringField(key, value);
        gen.writeEndObject();   
    }
}

如果使用
@JsonSerialize(使用=AuditSerializer.class)
注释
Audit
类,则不需要显式注册
AuditSerializer

@JsonSerialize(using=AuditSerializer.class)
public class Audit {
    ...
您可以直接使用
ObjectMapper

Audit audit = new Audit();
audit.auditId = "100";
audit.auditData = "purchase Order";

ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(audit));
// {"event":"auditId=100,auditData=purchase Order"}

您需要为
Audit
类编写自定义序列化程序

public class AuditSerializer extends StdSerializer<Audit> {

    public AuditSerializer() {
        super(Audit.class);
    }

    protected AuditSerializer(Class<Audit> auditClass) {
        super(auditClass);
    }

    @Override
    public void serialize(Audit audit, JsonGenerator gen, SerializerProvider provider) throws IOException {
        gen.writeStartObject();
        String key = "event";
        String value = String.format("auditId=%s,auditData=%s", audit.auditId, audit.auditData);
        gen.writeStringField(key, value);
        gen.writeEndObject();   
    }
}

如果使用
@JsonSerialize(使用=AuditSerializer.class)
注释
Audit
类,则不需要显式注册
AuditSerializer

@JsonSerialize(using=AuditSerializer.class)
public class Audit {
    ...
您可以直接使用
ObjectMapper

Audit audit = new Audit();
audit.auditId = "100";
audit.auditData = "purchase Order";

ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(audit));
// {"event":"auditId=100,auditData=purchase Order"}