com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value异常
springboot对象返回,一直报生成json异常,经过检查,发现是自己在做xss防护时对出参进行了json的处理(copy代码不可取,囧)
异常信息
这里进行了出参处理了,但实际上只要对入参处理就行了,把这个类改成入参处理即可
public class XssStringJsonSerializer extends JsonSerializer<String> { @Override public Class<String> handledType() { return String.class; } @Override public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (s == null) { String encodedValue = StringEscapeUtils.escapeHtml4(s); jsonGenerator.writeString(encodedValue); } }
即
//入参检查 public class XssStringJsonSerializer extends JsonDeserializer<String> { public XssStringJsonSerializer(Class<String> string) { super(); } @Override public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { String value = jsonParser.getValueAsString(); if (value != null){ return StringEscapeUtils.escapeHtml4(value.toString()); } return value; } @Override public Class<String> handledType() { return String.class; } }
耽误了一小时代码排除,xss防护copy别人代码的。。。没理解就用的下场。。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步