Разбор JSON с Scala-лифтом - PullRequest
       21

Разбор JSON с Scala-лифтом

2 голосов
/ 09 ноября 2011

Я пытаюсь проанализировать строку json со специальными символами в именах ее атрибутов (точек).

Вот что я пытаюсь:

//Json parser objects
case class SolrDoc(`rdf.about`:String, `dc.title`:List[String],
                   `dc.creator`:List[String], `dc.dateCopyrighted`:List[Int],
                   `dc.publisher`:List[String], `dc.type` :String)
case class SolrResponse(numFound:String, start:String, docs: List[SolrDoc])

val req = url("http://localhost:8983/solr/select") <<? Map("q" -> q)
var search_result = http(req ># { json => (json \ "response") })

var response = search_result.extract[SolrResponse]

Хотя моя строка json содержит значения для всех полей, я получаю сообщение об ошибке:

Message: net.liftweb.json.MappingException: No usable value for docs
No usable value for rdf$u002Eabout
Did not find value which can be converted into java.lang.String

Я подозреваю, что это как-то связано с точкой на именах, но пока мне не удалось заставить ее работать.

Спасибо!

Это выдержка из моего файла LiftProject.scala:

"net.databinder" % "dispatch-http_2.8.1" % "0.8.6",
"net.databinder" % "dispatch-http-json_2.8.1" % "0.8.6",
"net.databinder" % "dispatch-lift-json_2.8.1" % "0.8.6"

1 Ответ

1 голос
/ 09 ноября 2011

Точки в именах не должны быть проблемой. Это с лифт-JSON-2,4-M4

scala> val json = """ {"first.name":"joe"} """
scala> parse(json).extract[Person]
res0: Person = Person(joe)

Где

case class Person(`first.name`: String)
...