Java Jackson-使用treeToValue时处理Json节点中的文本?
我有一些代码,它接受一些输入json,并使用Jackson和“treeToValue”方法将其转换为一个简单的java类(pojo): 我希望能够处理json中所有节点值的文本,以扫描可能的XSS攻击,并根据需要对HTML进行编码 用treeToValue做这件事有什么用吗?还是容易读取值?我只想添加一个排序回调,这样当解析一个节点值时,它允许我根据需要更改节点文本。我查看了源代码,我想我可能必须派生一个定制的TreeTraversingParser来很好地完成这项工作,并重写“getText”Java Jackson-使用treeToValue时处理Json节点中的文本?,java,json,jackson,Java,Json,Jackson,我有一些代码,它接受一些输入json,并使用Jackson和“treeToValue”方法将其转换为一个简单的java类(pojo): 我希望能够处理json中所有节点值的文本,以扫描可能的XSS攻击,并根据需要对HTML进行编码 用treeToValue做这件事有什么用吗?还是容易读取值?我只想添加一个排序回调,这样当解析一个节点值时,它允许我根据需要更改节点文本。我查看了源代码,我想我可能必须派生一个定制的TreeTraversingParser来很好地完成这项工作,并重写“getText”
还有更好的建议吗 事实证明,这可以使用自定义ObjectMapper来完成
public CustomObjectMapper()
{
super();
SimpleModule stringModule = new SimpleModule("StringModule", new Version(1, 0, 0, null)).addDeserializer(String.class, new CustomStringDeserializer());
registerModule(stringModule);
}
private static class CustomStringDeserializer extends JsonDeserializer<String>
{
@Override
public String deserialize(JsonParser parser, DeserializationContext context) throws IOException
{
if (parser.getCurrentToken() == JsonToken.VALUE_STRING)
{
String text = parser.getText();
// Do whatever you want to the text here
return text;
}
}
}
public CustomObjectMapper()
{
super();
SimpleModule stringModule = new SimpleModule("StringModule", new Version(1, 0, 0, null)).addDeserializer(String.class, new CustomStringDeserializer());
registerModule(stringModule);
}
private static class CustomStringDeserializer extends JsonDeserializer<String>
{
@Override
public String deserialize(JsonParser parser, DeserializationContext context) throws IOException
{
if (parser.getCurrentToken() == JsonToken.VALUE_STRING)
{
String text = parser.getText();
// Do whatever you want to the text here
return text;
}
}
}
CustomObjectMapper mapper = new CustomObjectMapper();
MyBean bean = mapper.treeToValue(node, MyBean.class);