JSON 转换为特定格式
Posted
技术标签:
【中文标题】JSON 转换为特定格式【英文标题】:JSON conversion to a specific format 【发布时间】:2020-08-05 01:21:13 【问题描述】:我有一个 Java 对象并试图将其转换为特定的 JSON 格式
public class Audit
String auditId;
String auditData;
以上对象需要转换成以下JSON格式
"event":"auditId=100,auditData=purchase order"
我们如何使用 Jackson 解析器转换上述格式
【问题讨论】:
【参考方案1】:您需要为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();
然后使用此自定义序列化程序获取 Audit
的 JSON 字符串:
SimpleModule module = new SimpleModule();
module.addSerializer(new AuditSerializer(Audit.class));
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(module);
Audit audit = new Audit();
audit.auditId = "100";
audit.auditData = "purchase Order";
System.out.println(mapper.writeValueAsString(audit));
// "event":"auditId=100,auditData=purchase Order"
如果你用@JsonSerialize(using=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"
【讨论】:
以上是关于JSON 转换为特定格式的主要内容,如果未能解决你的问题,请参考以下文章
python KDE将轮廓和路径转换为特定的json格式传单友好