How to convert casbah mongodb list to json in scala / play

匿名 (未验证) 提交于 2019-12-03 02:00:02

问题:

I'm learning scala and mongodb at present and using the play! framework, so I'm making all sorts of mistakes as I get my head around things. Currently I have a scala object that returns a list of database objects returned from a mongodb query via casbah as follows;

object Alerts  {     def list() : List[DBObject]= {          val collection = MongoDatabase.collection;         val query = MongoDBObject.empty         val order = MongoDBObject("Issue Time:" -> -1)         val list = collection.find(query).sort(order).toList         list    } 

... }

Elsewhere in my code I wish to output the List of objects in Json - so I have;

  val currentAlerts = Alerts.list() 

What I'd like to write is something like;

  val resultingJson = currentAlerts.toJson  

But when I do this, I understandably get the following error;

  value toJson is not a member of List[com.mongodb.casbah.Imports.DBObject] 

My question is - what's the right way to convert a List of com.mongodb.casbah.Imports.DBObject into Json for output?

EDIT:

For clarity, what I really want to do is the equivalent of

val listInJson = collection.find(query).sort(order).toJson 

In the same way that I CAN write

val listAsString = collection.find(query).sort(order).toString 

回答1:

You can try

com.mongodb.util.JSON.serialize(Alerts.list()) 

This should return a JSON array with your Alerts



回答2:

I have the following

def service() = Action {  // connect  val collection = MongoConnection()("someDB")("someCollection")  // simply convert the result to a string, separating items with a comma  // this string goes inside an "array", and it's ready to hit the road  val json = "[%s]".format(   collection.find(someQuery).toList.mkString(",")  )   Ok(json).as("application/json") 

}



回答3:

I have what is a horrid solution as follows;

val currentAlerts = Alerts.list()  var jsonList : List[JsValue] = Nil  // Iterate over the DBObjects and use to String to convert each to JSON // and then parse that back into the list so we can use toJson on it later. // MAD, but works.  for (dbObject 

There must surely be a better way?



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!