将JSON转换为特定格式
我有一个Java对象,并试图将其转换为特定的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
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"}