8
如何序列化作爲Map值列表的Map的屬性?我已經能夠在吸氣劑上使用@JsonSerialize(using=...)
註釋進行其他簡單的轉換。但是,我不確定是否存在我想要做的事情。如何使用Jackson將列表序列化爲列表
如何序列化作爲Map值列表的Map的屬性?我已經能夠在吸氣劑上使用@JsonSerialize(using=...)
註釋進行其他簡單的轉換。但是,我不確定是否存在我想要做的事情。如何使用Jackson將列表序列化爲列表
我們需要類似的東西,在我們的例子中,我們使用自定義的@JsonSerialize
你評價說,這是愚蠢的簡單:使用
public class MyCustomSerializer extends JsonSerializer<Map<?, ?>> {
@Override
public void serialize(final Map<?, ?> value, final JsonGenerator jgen, final SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeObject(value.values());
}
}
代碼是:
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.annotate.JsonSerialize;
public class JacksonTest {
public static class ModelClass {
private final Map<String, String> map;
public ModelClass(final Map<String, String> map) {
super();
this.map = map;
}
@JsonSerialize(using = MyCustomSerializer.class)
public Map<String, String> getMap() {
return map;
}
}
public static void main(final String[] args) throws JsonGenerationException, JsonMappingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writeValue(System.out, new ModelClass(Collections.singletonMap("test", "test")));
}
}
我實現了使用默認串行器來處理不只是字符串的值:
@Override
public void serialize(final Map<Long, ?> value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException,
JsonProcessingException {
provider.defaultSerializeValue(value.values(), jgen);
}
編輯:正如Radu Simionescu所述,此解決方案僅適用於Pojos地圖。
是的,你做了,它可能適用於你的情況,但它不適用於地圖和集合,但只適用於pojos。不幸的是沒有provider.defaultSerializeMap –