我想解析JSON在斯卡拉,我不是很成功。 這裏是我的JSON結構:斯卡拉解析遞歸JSON
{
"data" : "test",
"field" : "test",
"listObj" : [{
"data" : "testInner1",
"field" : "testInner1"
} , {
"data" : "testInner2",
"field" : "testInner2"
}],
"obj" : {
"data" : "testInner1",
"field" : "testInner1"
}
}
我使用的電梯進行解析。這裏是我的代碼:
import net.liftweb.json._
implicit val formats = DefaultFormats
case class MyJson(data: String, field: String, obj: MyJson, listObj: List[MyJson])
val json = parse("""
{
"data" : "test",
"field" : "test",
"listObj" : [{
"data" : "testInner1",
"field" : "testInner1"
} , {
"data" : "testInner2",
"field" : "testInner2"
}],
"obj" : {
"data" : "testInner1",
"field" : "testInner1"
}
}""")
println(json.extract[Query])
我有上帝以下異常:
Caused by: net.liftweb.json.MappingException: No usable value for operation
Did not find value which can be converted into java.lang.String
at net.liftweb.json.Meta$.fail(Meta.scala:191)
at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:357)
at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:317)
at net.liftweb.json.Extraction$$anonfun$13.apply(Extraction.scala:253)
at net.liftweb.json.Extraction$$anonfun$13.apply(Extraction.scala:253)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at net.liftweb.json.Extraction$.instantiate$1(Extraction.scala:253)
at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:286)
at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:315)
at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:351)
... 34 more
Caused by: net.liftweb.json.MappingException: Did not find value which can be converted into java.lang.String
at net.liftweb.json.Meta$.fail(Meta.scala:191)
at net.liftweb.json.Extraction$.convert(Extraction.scala:403)
at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:314)
at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:351)
... 46 more
我一直在使用json4s嘗試,但我可以想辦法讓它解析成case類。當我從我的JSON中刪除obj和objList時,它運行良好。
任何人都可以指出我解析這種結構在Scala中讀取它的方式嗎?
你的意思是「嵌套」,而不是「遞歸」?遞歸對象通常包含一個嵌套的指針。 – nafg
nope。遞歸。 json對象包含它自己。 – Augusto
它包含*本身*(如果是的話,你能幫我看看怎麼樣?),或者它包含一個* type *的對象? – nafg