0

在 jcouchdb 中,我曾经扩展 BaseDocument,然后以透明的方式混合注释和未声明的字段。例子:

import org.jcouchdb.document.BaseDocument;

public class SiteDocument extends BaseDocument {
    private String site;

    @org.svenson.JSONProperty(value = "site", ignoreIfNull = true)
    public String getSite() {
        return site;
    }

    public void setSite(String name) {
        site = name;
    }
}

然后使用它:

// Create a SiteDocument
SiteDocument site2 = new SiteDocument();
site2.setProperty("site", "http://www.starckoverflow.com/index.html");
// Set value using setSite
site2.setSite("www.stackoverflow.com");
// and using setProperty
site2.setProperty("description", "Questions & Answers");
db.createOrUpdateDocument(site2);

我同时使用通过注释定义的文档字段(站点)和未定义的属性字段(描述),当我保存文档时,两者都会被序列化。

这对我来说很方便,因为我可以处理半结构化文档。

当我尝试对 Ektorp 做同样的事情时,我有使用注释的文档和使用 HashMap 的文档但是我找不到一种简单的方法来混合两者(我尝试过使用我自己的序列化程序,但这似乎对某些事情很有用我在 jcouchdb 中免费获得)。还尝试注释 HashMap 字段,但随后被序列化为对象,并且我将字段自动保存在具有 HashMap 字段名称的对象内。

是否可以(轻松/免费)使用 Ektorp?

4

1 回答 1

0

这绝对是可能的。你有两个选择:

  1. 以 org.ektorp.support.OpenCouchDbDocument 为基础
  2. 使用 @JsonAnySetter 和 @JsonAnyGetter 注释你的类。红色更多:http ://wiki.fasterxml.com/JacksonFeatureAnyGetter
于 2012-05-21T06:45:04.883 回答