Java Jackson JSON使用顶级值自定义映射序列化
我需要序列化以下类:Java Jackson JSON使用顶级值自定义映射序列化,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我需要序列化以下类: @JsonSerialize(using = ItemSerializer.class) public class Project { @JsonProperty public Map<String, Field> fields = new HashMap<String, Field>(); } 序列化函数: @Override public void serialize(...) throws ... { jgen.wr
@JsonSerialize(using = ItemSerializer.class)
public class Project {
@JsonProperty
public Map<String, Field> fields = new HashMap<String, Field>();
}
序列化函数:
@Override
public void serialize(...) throws ... {
jgen.writeStartObject();
for(Map.Entry<String, Field> entry : value.fields.entrySet()){
if(entry.getValue().isStringField){
jgen.writeStringField(entry.getKey(), entry.getValue().name);
}else{
jgen.writeObjectField(entry.getKey(), entry.getValue());
}
}
jgen.writeEndObject();
除了名为fileds(项目类中的变量名)的父元素不在此JSON中。如何将其添加到结果JSON中以获得类似以下内容:
{
"fields": {
"fieldValue4": {
"name": "field4"
},
"fieldValue3": {
"name": "field3"
},
"fieldValue2": {
"name": "field2"
},
"fieldValue1": "field1"
}
}
既然您已经指定了自己的自定义序列化程序,那么只需指定
gen.writeObjectFieldStart(“字段”)
,在序列化字段之前
映射,那么您是否可以将这些答案标记为解决方案?
{
"fieldValue4": {
"name": "field4"
},
"fieldValue3": {
"name": "field3"
},
"fieldValue2": {
"name": "field2"
},
"fieldValue1": "field1"
}
{
"fields": {
"fieldValue4": {
"name": "field4"
},
"fieldValue3": {
"name": "field3"
},
"fieldValue2": {
"name": "field2"
},
"fieldValue1": "field1"
}
}