java json jackson_java – 与Jackson重复的JSON字段

我正在使用Jackson与Spring一起进行JSON(de)序列化.但是,在某些情况下,我遇到了两次字段的问题.

我有一个抽象类:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "mimeType")

@JsonSubTypes({

@JsonSubTypes.Type(value = ImageBookmarkJsonModel.class, name = "image/jpeg"),

@JsonSubTypes.Type(value = EpubBookmarkJsonModel.class, name = "application/epub+zip")

})

public abstract class AbstractBookmarkJsonModel extends AbstractJsonModel {

protected String mimeType;

// Removed other fields for brevity

public String getMimeType() {

return mimeType;

}

public void setMimeType(String mimeType) {

this.mimeType = mimeType;

}

@Override

public String toString() {

ObjectMapper mapper = new ObjectMapper();

try {

return mapper.writeValueAsString(this);

} catch (IOException e) {

throw new IllegalStateException("Cannot convert object of type " + this.getClass().toString() + " to JSON", e);

}

}

}

一个具体的类扩展了抽象:

public class EpubBookmarkJsonModel extends AbstractBookmarkJsonModel {

private static final long serialVersionUID = 1L;

// Removed other fields for brevity

public EpubBookmarkJsonModel() {

this.mimeType = "application/epub+zip";

}

}

问题是当我序列化这个JSON时,我得到一个重复的mimeType字段:

{

"mimeType": "application/epub+zip",

"mimeType": "application/epub+zip",

"userId": 24,

"acid": "ACID-000000000029087",

"added": "2013-08-14T12:02:17Z",

"epubBookmarkId": 34,

"cfi": "epubcfi(/6/4!/2/68)",

"context": "CONTEXT"

}

我已经尝试使用previous answers的建议来使用@JsonAutoDetect注释来指定只应该使用类上的字段以及在ObjectMapper上设置相同的字段,但是这不能解决问题.

注解:

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE,

setterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE,

isGetterVisibility = JsonAutoDetect.Visibility.NONE)

ObjectMapper:

ObjectMapper mapper = new ObjectMapper();

mapper.getSerializationConfig().getDefaultVisibilityChecker()

.withFieldVisibility(JsonAutoDetect.Visibility.ANY)

.withGetterVisibility(JsonAutoDetect.Visibility.NONE)

.withSetterVisibility(JsonAutoDetect.Visibility.NONE)

.withCreatorVisibility(JsonAutoDetect.Visibility.NONE);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值