2017-03-17 118 views
2

我想將jvalue轉換爲json字符串。這裏是我的代碼如下所示:將JValue轉換爲JSON字符串

import org.json4s._ 
import org.json4s.JsonDSL._ 
import org.json4s.native.JsonMethods._ 
import org.json4s.DefaultFormats._ 

object Json4sTest { 

    def main(arg: Array[String]) { 
    var json = parse("""{"name":"luca", "id": "1q2w3e4r5t", "age": 26, "inner": { "age": 27 }, "url":"http:// www.nosqlnocry.wordpress.com"}""") 
// println(json) 

    val a: List[Map[String, JValue]] = List(Map("inner/age" -> 35, "age" -> 27), Map("name" -> "foo")) 
    val r = jsonFieldUpdater(json, a) 
    println(r) 

     } 


     def jsonFieldUpdater(json: JValue, list: List[Map[String, JValue]]): JValue = 
    // 
     } 
    } 

得到我的結果爲:

JObject(List((name,JString(foo)), (id,JString(1q2w3e4r5t)), (age,JInt(27)), (inner,JObject(List((age,JInt(35))))), (url,JString(http:// www.nosqlnocry.wordpress.com)))) 

我要尋找一個JSON字符串輸出爲:

{"name":"luca", "id": "1q2w3e4r5t", "age": 27, "inner": { "age": 35 }, "url":"http:// www.nosqlnocry.wordpress.com"} 
+0

我能夠使用(壓縮(render(r)))。toString()來完成這項工作。但我不確定它是否正確。 –

+0

如果我的回答是正確的,我可以建議編輯標題嗎?我想,例如'將JValue轉換爲字符串表示'可能更合適。你也可以考慮標記我的答案是正確的。如果不是,請忽略此評論。 – Rumid

回答

2

如果你要打印字符串表示JValue,您可以通過以下方式執行: println(compact(render(r)))

這樣的方法compact(render(r))收到String看起來是這樣的:

{"lotto":{"lotto-id":5,"winning-numbers":[2,45,34,23,7,5,3],"winners":[{"winner-id":23,"numbers":[2,45,34,23,3,5]},{"winner-id":54,"numbers":[52,3,12,11,18,22]}]}} 

或者您可以使用println(pretty(render(r)))獲得相當String是這樣的:從documentation使用

{ 
    "lotto":{ 
    "lotto-id":5, 
    "winning-numbers":[2,45,34,23,7,5,3], 
    "winners":[{ 
     "winner-id":23, 
     "numbers":[2,45,34,23,3,5] 
    },{ 
     "winner-id":54, 
     "numbers":[52,3,12,11,18,22] 
    }] 
    } 
} 

例子。