gpt4 book ai didi

spring-mvc - @JsonSerialize 和 JsonSerializer 的使用

转载 作者:行者123 更新时间:2023-12-04 01:07:40 26 4
gpt4 key购买 nike

问题
我有一个 Spring MVC 应用程序,它要求我将某个实体列表的 id 和名称转换为具有特定格式的 JSON 对象数组,并在某个请求上输出。也就是说,我需要一个像这样的 JSON 对象数组:

{
label: Subject.getId()
value: Subject.getName()
}
为了便于使用 jQuery 自动完成插件。
所以在我的 Controller 中,我写了以下内容:
@RequestMapping(value = "/autocomplete.json", method = RequestMethod.GET)
@JsonSerialize(contentUsing=SubjectAutocompleteSerializer.class)
public @ResponseBody List<Subject> autocompleteJson() {
return Subject.findAllSubjects();
}

// Internal class
public class SubjectAutocompleteSerializer extends JsonSerializer<Subject> {

@Override
public void serialize(Subject value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeStringField("label", value.getId().toString());
jgen.writeStringField("value", value.getName());
jgen.writeEndObject();
}

}
但是,我返回的 JSON 是 Jackson 推断的默认序列化。我的自定义序列化程序似乎被完全忽略了。显然问题是@JsonSerialize 或 JsonSerializer 的不正确使用,但我无法在任何地方的上下文中找到这些的正确用法。
问题
使用 Jackson 实现我想要的序列化的正确方法是什么?请注意,实体仅在此上下文中以这种方式序列化,并在其他地方对其他序列化开放,这一点很重要

最佳答案

@JsonSerialize应该在被序列化的类而不是 Controller 上设置。

关于spring-mvc - @JsonSerialize 和 JsonSerializer 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com