java - Jackson 将字符串列表反序列化为字符串
问题描述
有没有一种简单的方法可以将字符串列表反序列化为单个字符串?
例如,我会有这个 JSON:
{
"stringList": [
"somethingElse"
],
"simpleString": "something",
}
我希望它被反序列化成这个 POJO:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class AClass {
@JsonProperty("stringList")
private String justAString;
@JsonProperty("simpleString")
private String someString;
}
我想提一下,列表肯定只有一项,并且无法控制它的生成方式。为justAString字段使用自定义反序列化器的唯一方法是什么?
编辑如果可能的话,我想使用Jackson 的ObjectMapper类
解决方案
一种方法是对需要转换的属性使用备用 getter/setter 方法,即将@JsonProperty
注释从字段移动到 getter 方法,添加一组额外的 getter/setter 方法,然后使用@JsonIgnore
它们ObjectMapper
不使用它们:
class AClass {
private String justAString;
private String someString;
@JsonProperty // JSON field named same as virtual property
private List<String> getStringList() { // Getter for virtual property (private = hidden from Java callers)
return Collections.singletonList(this.justAString);
}
private void setStringList(List<String> stringList) { // Setter for virtual property
this.justAString = stringList.toString();
}
@JsonIgnore // This POJO property is not a JSON field
public String getJustAString() { // Standard POJO getter
return this.justAString;
}
public void setJustAString(String justAString) { // Standard POJO setter
this.justAString = justAString;
}
@JsonProperty("simpleString") // JSON field named different from POJO property
public String getSomeString() { // Standard POJO getter
return this.someString;
}
public void setSomeString(String someString) { // Standard POJO setter
this.someString = someString;
}
}
测试
String input = "{\r\n" +
" \"stringList\": [\r\n" +
" \"somethingElse\"\r\n" +
" ],\r\n" +
" \"simpleString\": \"something\"\r\n" +
"}";
AClass aClass = new ObjectMapper().readValue(input, AClass.class);
System.out.println("justAString = " + aClass.getJustAString());
System.out.println("someString = " + aClass.getSomeString());
输出
justAString = [somethingElse]
someString = something
推荐阅读
- javascript - 计算页面上具有 id 属性的列表元素的数量
- javascript - 如何在元素或弹出窗口中隐藏/显示部分 onclick
- python - 如何使用 map 函数将数据框中的所有负数转换为 python pandas 中所有数字的平均值?
- html - 修复了标题重叠的内容
- flask - 查找其数组属性包含字符串的实体
- rust - 修改单元格
> 通过多个所有者 - UB 与否? - c# - 如何解决 C# web api 错误 404 未找到
- java - 无法使执行器端点在旧 Spring 引导项目中工作 - 获取身份验证页面
- c - FFMPEG encode_audio.c 与 g722 编码器一起崩溃
- java - RestTemplate.exchange 方法中的 uriVariable 问题