2016-01-07 3 views
1

Когда я пытаюсь разобрать объект json, я получаю следующую ошибку.Как разобрать JSON с лифтом в Scala?

import net.liftweb.json._ 

object SarahEmailPluginConfigTest { 
    implicit val formats = DefaultFormats 

    case class Mailserver(url: String, username: String, password: String) 

    val json = parse("""{"url": "imap.yahoo.com", "username": "myusername", "password": "mypassword" }""") 

    def main(args: Array[String]) { 
    val m = json.extract[Mailserver] 
    println(m.url) 
    println(m.username) 
    println(m.password) 
    } 
} 

Я добавил «подъемную json_2.9.0-1-2.4.jar» на мой путь сборки, и я получаю следующее сообщение об ошибке:

could not find implicit value for parameter formats: net.liftweb.json.Formats

not enough arguments for method extract: (implicit formats: net.liftweb.json.Formats, implicit mf: scala.reflect.Manifest[MailServer])MailServer. Unspecified value parameters formats, mf

+0

не уверен в этой конкретной библиотеке, но похоже, что вам нужно зарегистрировать свой класс. 'implicit val formats = DefaultFormats', вероятно, достаточно для базового набора типов, но вы добавляете свои собственные и, возможно, должны предоставить им неявный формат. –

ответ

0

Ваш пример работает для меня на Скале 2.11.7 и lift-json-2.6.2. Какую версию scala вы используете? Назовите имя jar, которое вы указали выше, и вы должны использовать scala 2.9.*, который довольно старый. Если вы не на scala 2.9.* Я предполагаю, что это из-за двоичной несовместимости между версиями Scala. Если вы используете sbt, попробуйте следующее, как build.sbt:

name := "<name of your project>" 

scalaVersion := "2.11.7" 

libraryDependencies += "net.liftweb" %% "lift-json" % "2.6.2" 

Вы можете удалить старый jar файл, поскольку sbt заботится о том, что для вас.

Смежные вопросы