/ / Scala + Lift: conversioni implicite ambigue durante l'analisi di XML - xml, scala, lift

Scala + Lift: conversioni implicite ambigue durante l'analisi di XML - xml, scala, lift

Ho un metodo che estrae oggetti-azione da un nodo xml:

    private def appendActionsFromXml(device: Device, xml: Node) = {
xml  "actions"  "action" map {
x => {
val key = x  "@key" text
val value = x  "@value" text
device.createAction(key, value)
}
}
}

Tuttavia, poiché ho importato import net.liftweb.json.JsonDSL._ nella stessa classe, ottengo un'ambiguità quando estraggo l'attributo "@key" da x:

[INFO] Note that implicit conversions are not applicable because they are ambiguous
[INFO]  both method string2jvalue in trait Implicits of type (x: String)net.liftweb.json.JsonAST.JString
[INFO]  and method augmentString in object Predef of type (x: String)scala.collection.immutable.StringOps
[INFO]  are possible conversion functions from String to ?{val apply: ?}
[INFO]  val value = x  "@value" text

Come posso risolvere questa ambiguità in questo metodo perticolare?

risposte:

0 per risposta № 1

Prova questo:

val key: String = x  "@key" text
val value: String = x  "@value" text

0 per risposta № 2

Se possibile, sposta l'importazione JsonDSL (o al contrario l'importazione XML) in un ambito più piccolo.

class A {
def doXmlStuff = { ... }
def doJsonStuff = {
import net.liftweb.json.JsonDSL._
...
}
}

0 per risposta № 3

Di solito il modo per risolvere questo tipo di problema è ridurre l'ambito dell'importazione. In questo caso forse non è necessario net.liftweb.json.JsonDSL._ nell'ambito nell'ambito che racchiude appendActionsFromXml. Difficile dire se funzionerebbe senza vedere più contesto.