无法反序列化值中包含元音变音符字符的属性,错误为无效的UTF-8中间字节0x65



我正在使用自定义反序列化程序将json节点解析为适当的子类。当某些属性具有元音变音符时,代码在parser.readValueAsTree()处失败。我也尝试在属性上使用JsonDeserializer,但从未调用过它。我想从解析器中去掉这些重音字符,然后对其进行反序列化。有没有办法修改一些键值属性来删除这些字符,然后读取json节点?

以下是代码:

import java.io.IOException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.node.TextNode;

public class CustomAddressDeserializer extends StdDeserializer<Address> {

protected CustomAddressDeserializer() {
super(Address.class);
}
@Override
public Address deserialize(JsonParser parser, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
TreeNode node = parser.readValueAsTree();
//code fails at this point

}
}

json节点是一个地址列表,其中包含带有重音字符的城市

所以,问题实际上在于编码。我必须在VM参数中明确地将编码设置为UTF-8。-Dfile.concoding=UTF-8

这解决了问题。

相关内容

最新更新