2011-11-09 1 views
2

특성 이름 (점)에 특수 문자가있는 json 문자열을 구문 분석하려고합니다.스칼라 리프트로 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 

나는 그것을 의심 : 내 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] 

비록 이것이 내가지고있어 오류는 다음과 같습니다

내가 노력하고있어입니다 이름의 점과 관련이 있지만 지금까지는 제대로 작동하지 않았습니다.

감사합니다.

내 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" 
+0

Databinder이 끌어와 리프트 JSON의 이전 버전

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

, 리프트 메일 링리스트에 대한 스레드가, 지금은 그것을 찾을 수 없습니다 그러나 나중에 링크를 게시 할 예정이다. – fmpwizard

+0

시도해보십시오. http://osdir.com/ml/liftweb/2011-10/msg00806.html – fmpwizard

답변

1

점은 문제가되지 않습니다. 이 함께 리프트 JSON-2.4-M4

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

dispatch.liftjson.Js._과 관련이 있습니까? 디스패치 라이브러리 (http (req> # {json => (json \ "response")}))를 사용하여 solr을 호출하고 이전에 게시 한 결과를 처리합니다. – MrM

+0

잘 모르겠지만 dispatch.liftjson.Js가 문제가 아니어야한다고 생각합니다. 이전 버전의 Lift JSON에는 기호 필드 이름과 관련된 버그가있었습니다. 내 생각 엔 당신이 이전 버전을 사용하고있는 것입니까? – Joni

+0

이것은 사용하고있는 버전입니다. "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 " 최근에 생각합니다. – MrM