2014-10-07 81 views
1

我有一个带有一些任意JSON的字符串。我想用我的JSON字符串构造一个JsObject作为JSON对象值,而不是字符串值。例如,假设我的任意字符串是无聊的{}我想要{"key": {}}而不是{"key": "{}"}将JSON字符串序列化为Scala/Play中的JSON

下面是我试图做到这一点。

val myString = "{}" 
Json.obj(
    "key" -> Json.parse(myString) 
) 

我得到的错误是

type mismatch; found : 
    scala.collection.mutable.Buffer[scala.collection.immutable.Map[String,java.io.Serializable]] 
    required: play.api.libs.json.Json.JsValueWrapper 

我不知道该怎么做了一番。

回答

2

“{}”是一个空对象。

因此,要获得{"key": {}}

Json.obj("key" -> Json.obj()) 

更新

也许你有一个旧版本播放的。这适用于Play 2.3.x:

scala> import play.api.libs.json._ 
scala> Json.obj("foo" -> Json.parse("{}")) 
res2: play.api.libs.json.JsObject = {"foo":{}} 
+0

不,对不起。这只是我的任意字符串的一个例子。 – 2014-10-07 14:14:14

+0

对不起。那时我不明白你的问题。 – 2014-10-08 00:01:36

+0

呵呵。因此,在描述我的问题时,我简化了一个我认为不重要的细节,但是是。因为一些未知的原因,我实际上在做'''Json.obj(“foo” - > Map(“bar” - > Json.parse(“{}”)))'''当我应该做'''Json .obj(“foo” - > Json.obj(“bar” - > Json.parse(“{}”)))'''。你的回答帮助我重新评估我的假设,所以感谢你的帮助! – 2014-10-08 03:50:57

相关问题