在 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
我是 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