首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB ObjectID使用lift-json作为JSON

MongoDB ObjectID使用lift-json作为JSON
EN

Stack Overflow用户
提问于 2011-12-23 18:34:53
回答 1查看 651关注 0票数 0

我将Bowler框架用于一些REST API(内部使用lift-json模块进行繁重的提升),并具有以下case类:

代码语言:javascript
复制
case class Item(_id : ObjectId, name : String, value : String)

当我将这个case对象返回给客户端时,我需要包含_id字段的值。但是,_id列在Json输出中作为空列表返回,而不是它的实际值。

代码语言:javascript
复制
{"_id":{},"name":"Id Test","value":"id test"}

任何关于如何解决这个问题的建议都将不胜感激。

更新:我试着为它使用定制的序列化程序,但是由于某些原因,它没有被调用!

代码语言:javascript
复制
    class ObjectIdSerializer extends Serializer[ObjectId] {
    private val Class = classOf[ObjectId]

    def deserialize(implicit format: Formats) = {
      case (TypeInfo(Class, _), json) => json match {
        case JObject(JField("_id", JString(s)) :: Nil) => new ObjectId(s)
        case x => throw new MappingException("Can't convert " + x + " to  ObjectId")
      }
    }

    def serialize(implicit format: Formats) = {
      case x: ObjectId => { println("\t @@@@@@@@Custom Serializer was called!"); JObject(JField("_id", JString(x.toString)) :: Nil)}
    }
  }

  implicit val formats = DefaultFormats + new ObjectIdSerializer
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-24 21:16:18

这是固定的。为了覆盖格式声明,需要定义我自己的RenderStrategy类。这篇文章有更多关于它的细节http://blog.recursivity.com/post/5433171352/how-bowler-does-rendering-maps-requests-to-objects

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8614996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档