Rém*_*ghe 3 java json spring-mvc jackson
首先,我知道我要做的事情可以使用自定义来完成JsonSerializer,但我想知道是否有更少的样板代码解决方案.
在Spring MVC,我想将序列Map化为一对夫妇.假设我想回复这样一个Map:
Map<String, String> res = new HashMap<>();
res.put("key1", "value1");
res.put("key2", "value2");
Run Code Online (Sandbox Code Playgroud)
默认的序列化结果将JSON如下所示:
{key1: value1, key2: value2}
Run Code Online (Sandbox Code Playgroud)
有没有办法让这样的东西,而不使用自定义JsonSerializer?
[{key: "key1", value: "value1"}, {key: "key2", value: "value2"}]
Run Code Online (Sandbox Code Playgroud)
我正在使用Spring-Boot 1.3默认版本的Spring MVC和Jackson.
由于我更喜欢可重用的解决方案,并且找不到标准解决方案,因此我使用自定义实现了它JsonSerializer,如下所示:
public class MapToCoupleArraySerializer extends JsonSerializer<Map<?, ?>>{
@Override
public void serialize(Map<?, ?> value, JsonGenerator generator,
SerializerProvider serializers) throws IOException,
JsonProcessingException {
generator.writeStartArray();
for (Entry<?, ?> entry : value.entrySet()){
generator.writeStartObject();
generator.writeObjectField("key", entry.getKey());
generator.writeObjectField("value", entry.getValue());
generator.writeEndObject();
}
generator.writeEndArray();
}
}
Run Code Online (Sandbox Code Playgroud)
并以传统的Spring方式使用它:
public class MyClassToSerialize{
@JsonSerialize(using = MapToCoupleArraySerializer .class)
private Map<Key, Value> recipes;
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |