当前位置:   article > 正文

com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value

can not write a field name, expecting a value
  1. Caused by: com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value
  2. at com.fasterxml.jackson.core.JsonGenerator._reportError(JsonGenerator.java:1961)
  3. at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeFieldName(UTF8JsonGenerator.java:238)
  4. at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:725)
  5. at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
  6. at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
  7. at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
  8. at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
  9. at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
  10. at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
  11. at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
  12. at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
  13. at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
  14. at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
  15. at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1396)
  16. at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:913)
  17. at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:287)
  18. ... 65 common frames omitted

此异常是bean 字段序列化异常。因为我的实体添加了序列化的注解

  1. import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  2. public class BindBankCardVO {
  3. /**
  4. * 自增主键
  5. */
  6. @ApiModelProperty("自增主键")
  7. private Integer id;
  8. /**
  9. * 卡号
  10. */
  11. @ApiModelProperty("卡号")
  12. @JsonSerialize(using = AcctNoSerialize.class)
  13. private String acctNo;
  14. /**
  15. * 开户行
  16. */
  17. @ApiModelProperty("开户行")
  18. private String bankName;
  19. }

AcctNoSerialize  这个类判断的时候没写 不满足条件是  也给写出去,等于一个字段就没有写出去。
 

以前的代码
 

  1. package com.gaia.pay.vo;
  2. import com.fasterxml.jackson.core.JsonGenerator;
  3. import com.fasterxml.jackson.databind.JsonSerializer;
  4. import com.fasterxml.jackson.databind.SerializerProvider;
  5. import java.io.IOException;
  6. public class AcctNoSerialize extends JsonSerializer<String> {
  7. @Override
  8. public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
  9. if (value != null&&value.length()>=16) {
  10. gen.writeString(new StringBuilder(value).replace(4, value.length() - 4, "********").toString());
  11. }
  12. }
  13. }

修改后的代码
 

  1. package com.gaia.pay.vo;
  2. import com.fasterxml.jackson.core.JsonGenerator;
  3. import com.fasterxml.jackson.databind.JsonSerializer;
  4. import com.fasterxml.jackson.databind.SerializerProvider;
  5. import java.io.IOException;
  6. public class AcctNoSerialize extends JsonSerializer<String> {
  7. @Override
  8. public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
  9. if (value != null&&value.length()>=16) {
  10. gen.writeString(new StringBuilder(value).replace(4, value.length() - 4, "********").toString());
  11. } else {
  12. gen.writeString(value);
  13. }
  14. }
  15. }

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号