当前位置: 首页 > 知识库问答 >
问题:

杰克逊·米辛:反序列化routeId

李嘉胜
2023-03-14
public interface MyMixin {
  /**
   * Mixin to set key value for pojo.
   * @param key key
   * @param value value
   */
  @JsonAnySetter
  void put(String key, Object value);
}

public class MyPojo {
  @JsonProperty("_id")
  @javax.persistence.Id
  private String id;
  private String name;
} 

我明白它无法从嵌套JSON反序列化字符串。我解决这个问题的一个方法是通过编写自定义映射器

 public static MyPojo map(final Document document) {
    final MyPojo pojo = new MyPojo();
    pojo.setUd(document.getObjectId("_id").toHexString());
    // set other fields
    return pojo;

但是只要pojo中有变化,这就需要修改映射器,添加/删除字段。Mixin工作时没有任何变化,我该如何更新我的Mixin来处理objectId呢?

共有1个答案

白信鸿
2023-03-14

我不确定你是否能用一种通用的方式来处理这种情况。我提出了一个与mixin没有太多关系的解决方案,但给出了一种反序列化此类字段的通用方法。首先创建一个类来表示json ID:

@Getter @Setter
public class OidId {
    @JsonProperty("$oid")
    private String oid;
}

然后是一个抽象类,用于映射:

public abstract class HasOidId {

    // moved from MyPojo
    @JsonProperty("_id")
    @javax.persistence.Id
    private String id;

    @JsonSetter("_id") // this is the trigger for mapping "_id" stufff
    public void setId(OidId oidId) {
        this.id = oidId.getOid();
    }
}

然后让mypojo扩展上面:

@Getter @Setter
public class MyPojo extends HasOidId {
    private String name;
}
 类似资料:
  • 我已经发布了类似的东西,但我仍然试图集中在我的问题上。 谢谢你能容忍我。 com.fasterxml.jackson.databind.jsonMappingException:无法构造FHIR.Element的实例,问题:抽象类型要么需要映射到具体类型,有自定义的反序列化器,要么需要在com.fasterxml.jackson.databind.jsonMappingException.from

  • 我的服务器 API 使用不同类型的多态对象。例如,我有一个 json: 科特林为它上课: 和mixin类: 当我从客户端呼叫时 应用程序崩溃并显示 NPE: java.lang.NullPointerException:尝试对com . faster XML . Jackson . databind . intro SPECT . annotatedfieldcollector . _ addFi

  • 我想用scala中的jackson反序列化json json_结构: {“type”:“struct”,“fields”:[{“name”:“code_role”,“type”:“string”,“nullable”:true,“metadata”:{“HIVE_type_string”:“string”},{“name”:“libelle_role”,“type”:“string”,“nulla

  • 问题内容: 我有一个JSON字符串,将标记为而不是。因此,例如,如果我有一个没有子对象的对象,我将收到类似以下的字符串: 我想将其反序列化为Parent类,并将子级正确设置为一个空的子级列表。 对于上述JSON字符串,我想要一个对象,其设置为,而设置为。 我会知道如何在整个课堂上使用注释 然后 但是,我想解决一个从字符串正确实例化List的一般问题: 我能得到类似的东西吗? 问题答案: 几个选择;

  • 问题内容: 我的问题很简单:我有以下简单的类: 我正在尝试处理以下JSON: 显然,这里存在一个问题(“ blah”无法解析为int) 以前,Jackson抛出类似org.codehaus.jackson.map.JsonMappingException的内容:无法从字符串值’blah’构造java.lang.Integer的实例:不是有效的Integer值 我同意这一点,但是我想在某个地方注册一

  • 我在spring-boot项目中使用Jackson和hibernate: 并将其添加到转换器中: 我使用facebook网络钩子在Messenger中重新获取关于新消息的信息: 有效负载参数是一个字符串,但jackson转换器无法对其进行反序列化: W.S.M.S.DefaultHandlerExceptionResolver:未能读取HTTP消息:org.springframework.HTTP