java - JSON序列化为不同的值
问题描述
我有下面的json,我正在序列化
{
"name":"John",
"switch":"1"
},
{
"name":"Jim",
"switch":"0"
}
我想将它序列化为不同的名称所以我必须像下面那样做
class Data {
private String name;
private String flag;
@JsonProperty("flag")
public byte getFlag() {
return flag;
}
@JsonProperty("switch")
public void setSwitch(String s) {
this.flag = flag;
}
}
这样我就可以将其转换如下
{
"name":"John",
"flag":"1"
},
{
"name":"Jim",
"flag":"0"
}
现在我想将 numic 值分别映射到 Y 和 N 为 1 和 0。我能做到吗?
我希望我的最后一个字符串是这样的
{
"name":"John",
"switch":"Y"
},
{
"name":"Jim",
"switch":"N"
}
解决方案
我同意@Gaël J,但如果您想继续,此代码更改可能会帮助您将 1/0 转换为 Y/N。
public class Application {
@ToString
static class Input {
@JsonProperty("name")
private String name;
@JsonProperty("switch")
private String flag;
@JsonProperty("name")
public void setName(String name){
this.name = name;
}
@JsonProperty("switch")
public void setSwitch(String s) {
for(SwitchMap valuePair : SwitchMap.values()){
if(valuePair.getValue().equals(s)){
this.flag = valuePair.name();
}
}
}
}
public static void main(String[] args) throws JsonProcessingException {
String json = "{\n" +
"\"name\":\"John\",\n" +
"\"switch\":\"1\"\n" +
"}";
ObjectMapper mapper = new ObjectMapper();
Input in = mapper.readValue(json, Input.class);
System.out.println(mapper.writeValueAsString(in));
}
}
用映射定义一个枚举
@Getter
public enum SwitchMap {
Y("1"),
N("0");
private final String value;
private SwitchMap(String value){
this.value = value;
}
}