赞
踩
- Caused by: com.fasterxml.jackson.core.JsonGenerationException: Can not write a field name, expecting a value
- at com.fasterxml.jackson.core.JsonGenerator._reportError(JsonGenerator.java:1961)
- at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeFieldName(UTF8JsonGenerator.java:238)
- at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:725)
- at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
- at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
- at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
- at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
- at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
- at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
- at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
- at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
- at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
- at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
- at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1396)
- at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:913)
- at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:287)
- ... 65 common frames omitted

此异常是bean 字段序列化异常。因为我的实体添加了序列化的注解
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
- public class BindBankCardVO {
- /**
- * 自增主键
- */
- @ApiModelProperty("自增主键")
- private Integer id;
-
- /**
- * 卡号
- */
- @ApiModelProperty("卡号")
- @JsonSerialize(using = AcctNoSerialize.class)
- private String acctNo;
-
- /**
- * 开户行
- */
- @ApiModelProperty("开户行")
- private String bankName;
-
- }

AcctNoSerialize 这个类判断的时候没写 不满足条件是 也给写出去,等于一个字段就没有写出去。
- package com.gaia.pay.vo;
-
- import com.fasterxml.jackson.core.JsonGenerator;
- import com.fasterxml.jackson.databind.JsonSerializer;
- import com.fasterxml.jackson.databind.SerializerProvider;
-
- import java.io.IOException;
-
-
- public class AcctNoSerialize extends JsonSerializer<String> {
-
- @Override
- public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- if (value != null&&value.length()>=16) {
- gen.writeString(new StringBuilder(value).replace(4, value.length() - 4, "********").toString());
- }
-
- }
- }

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

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。