era*_*era 3 java jackson jackson2
Jackson 将输入数字读取为字符串。作为下面的示例,Student 类将名称 4567 读取为字符串。
例如:输入
{
name: 4567
...
}
Run Code Online (Sandbox Code Playgroud)
Java类
Class Student {
String name;
...
}
Run Code Online (Sandbox Code Playgroud)
Jackson 正在解析 JSON 文本并将数字值映射到字符串字段,我不需要类型转换,即将数字转换为字符串。在这种情况下,Jackson 将值从 int (4567) 转换为 String("4567")。如果提供的其他类型失败,此行为如何更改以引发异常?
注册的自定义解串器java.lang.String
肯定可以工作并让您防止转换。反序列化器将直接查看内容,JsonParser
以便它们可以检测底层令牌类型。
这将帮助您:
public class ForceStringDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
if (jsonParser.getCurrentToken() == JsonToken.VALUE_NUMBER_INT) {
throw deserializationContext.wrongTokenException(jsonParser, JsonToken.VALUE_STRING, "Attempted to parse int to string but this is forbidden");
}
return jsonParser.getValueAsString();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在这里找到更多信息。
归档时间: |
|
查看次数: |
2867 次 |
最近记录: |