在 spring 中格式化 class 的 json

format a json of a class in spring

我是 spring 的新手,我想要 class

的 json 回复

public class Mapping { public String name; public Object value; }

改自

{"name" : 'value of field name', "value": 'value of field value'}

{'value of field name' : 'value of field value'}

我尝试了 @JsonValue@JsonKey 但它们没有用。我该怎么做。

编辑: 我想根据字段 name.

的值动态设置键的值

edit_P2: 这个class,是json中单个字段的模型,意味着它的一个对象必须持有我的json的一个键和一个值,就像一张地图,它有键和值,我想要的是将键存储在字段 'name' 中并将值存储在外字段中,因此当我 return 这个对象时,它 return 将字段 'name' 中的字符串作为key 和另一个作为 value,假设 name="the key" 和 value="the value",我希望它是 return as "the key":"the value".

根据您的评论进行编辑: 你的 class 从

改变了吗
public class Mapping { 
   public String name; 
   public Object value; 
}

简单来说:

public class Mapping { 
   public String name; 
}

在你的代码中:

Mapping myMapping = new Mapping();
myMapping.name = "myValue";

这将被解析为 JSON:{"name":"myValue"}

补充编辑
好的,我想我明白你想要什么,我认为在单个 json 序列化中可能是不可能的。您的选择是创建自定义序列化程序 请参阅本文:Jackson – Custom Serializer. Or (in my opinion simpler way) add a method to your class toMap() that will produce your desired map and than convert that map to Json. That will give you desired Json. BTW for simple Json serializer/deserializer that is a wrapper over Json-Jackson library look here: JsonUtils. The library could be found as Maven artifact and on Github(包括源代码和 Javadoc)。
原回答

您需要使用注释 @JsonProperty 及其属性“名称”。这是一篇关于它的好文章:Jackson – Change Name of Field