如何在Riak-Java中注册Scala Jackson模块?
问题描述:
需要在存储到Riak时支持Scala列表和选项。看起来杰克逊的Scala模块会为此工作。然而,它将如何被钩入Riak中的对象映射器?不知道我是否需要重写某些内容或是否有可以轻松解决的注释。如何在Riak-Java中注册Scala Jackson模块?
答
几个版本前,我加入了getObjectMapper()
方法将JSONConverter
有人曾要求它。这是用于访存/存储操作的Converter
,如果您正在传入POJO并且尚未创建并通过自己的传入。
你会想自己实例化JSONConverter
并获得ObjectMapper
从中:
JsonConverter<MyClass> converter = new JSONConverter<MyClass>(MyClass.class, bucketName);
ObjectMapper om = converter.getObjectMapper();
现在,您可以用ObjectMapper
注册模块,然后使用JSONConverter
与读取/存储操作(使用withConverter()
方法StoreObject
和FetchObject
)。
我想这就是你要找的。如果你需要更多的控制序列化/反序列化你的对象,你也可以编写你自己的Converter
- 我已经写了一个关于这个主题的食谱入口:https://github.com/basho/riak-java-client/wiki/Using-a-custom-Converter
非常感谢。我正在烹饪一个无处不在的定制分支。这也将在新的烹饪书籍维基? – crockpotveggies 2013-03-06 17:18:38
其实,从头开始,也许我可以自己更新文档(在用Scala完成课程之后)。 :) – crockpotveggies 2013-03-06 17:33:23
当然,它在'JSONConverter'的Javadoc中。实际上有人在github上打开了一个问题,他们要求添加一个将ObjectMapper作为参数的构造函数。同样的结果,但不笨重。只是没有得到它的优先事项。如果你想写一些特定的食谱scala,我很乐意添加它。 – 2013-03-06 18:52:05