zoukankan      html  css  js  c++  java
  • 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别人代码的。。。没理解就用的下场。。

  • 相关阅读:
    二部图(二分图判定--dfs)
    chd校内选拔赛题目+题解
    敌兵布阵 线段树单点更新
    Employment Planning DP
    Tickets 基础DP
    Super Jumping! Jumping! Jumping! 基础DP
    【高精度加法】
    【最短路径之dijkstra(迪杰斯特拉)算法】
    各类最短路算法基本模板-C++
    【最小生成树之Prim算法】-C++
  • 原文地址:https://www.cnblogs.com/dslx/p/11819953.html
Copyright © 2011-2022 走看看