java – 具有对象类型的Jackson JSON列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 具有对象类型的Jackson JSON列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1439字,纯文字阅读大概需要3分钟。
内容图文
我必须从对象列表中序列化JSON.生成的JSON必须如下所示:
{
"status": "success",
"models": [
{
"model": {
"id": 23,
"color": "red"
}
},
{
"model": {
"id": 24,
"color": "green"
}
}
]
}
当我简单地序列化时,我错过了类型/键“模型”:
List<Model> list = new ArrayList<Model>(); // add some new Model(...)
Response r = new Response("success", list); // Response has field "models"
相反,我得到这个:
{
"status": "success",
"models": [
{
"id": 23,
"color": "red"
},
{
"id": 24,
"color": "green"
}
]
}
如何为每个对象添加“模型”而无需编写具有属性“模型”的愚蠢包装类?
我的课程看起来像这样:
public class Response {
private String status;
private List<Model> models;
// getters / setters
}
public class Model {
private Integer id;
private String color;
// getters / setters
}
解决方法:
没有内置的方法来做到这一点.你必须编写自己的JsonSerializer.就像是
class ModelSerializer extends JsonSerializer<List<Model>> {
@Override
public void serialize(List<Model> value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jgen.writeStartArray();
for (Model model : value) {
jgen.writeStartObject();
jgen.writeObjectField("model", model);
jgen.writeEndObject();
}
jgen.writeEndArray();
}
}
然后注释模型字段,以便它使用它
@JsonSerialize(using = ModelSerializer.class)
private List<Model> models;
这将序列化为
{
"status": "success",
"models": [
{
"model": {
"id": 1,
"color": "red"
}
},
{
"model": {
"id": 2,
"color": "green"
}
}
]
}
如果您同时序列化和反序列化,那么您还需要一个自定义反序列化器.
内容总结
以上是互联网集市为您收集整理的java – 具有对象类型的Jackson JSON列表全部内容,希望文章能够帮你解决java – 具有对象类型的Jackson JSON列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。