2017-02-20 3 views
1

Ich habe einen Winkel App, die POSTs eine Anfrage an den Server wie folgt:Scala Wie konvertiert man JsonAST.JValue in einen Typ?

$scope.downloadPartDetails = (parts, e) -> 
    req = { 
     method: 'POST', 
     url: '/downloads/partdetails', 
     headers: { 
     'Content-Type': "application/json; charset=utf-8" 
     }, 
     data: { parts: [ 
     {manufacturer: "mfr1", partNumber: "part num1"}, 
     {manufacturer: "mfr2", partNumber: "part num2"}, 
     {manufacturer: "mfr3", partNumber: "part num3"} 
     ] } 
    } 
    $http(req) 

Es ist wie diese auf dem Server zeigt mich:

JArray(List(JObject(List(JField(manufacturer,JString(mfr1)), JField(partNumber,JString(part num1)))), JObject(List(JField(manufacturer,JString(mfr2)), JField(partNumber,JString(part num2)))), JObject(List(JField(manufacturer,JString(mfr3)), JField(partNumber,JString(part num3)))))) 

Gibt es eine Möglichkeit, dies zu einer Liste zu konvertieren [ Teil]?

case class Part(mfr: String, pn: String) 

Antwort

1

Es wäre einfacher, wenn Sie die gleichen Feldnamen in der json und im Falle Klasse

case class Part(manufacturer: String, partNumber: String) 
val part: Part = jvalue.extract[Part] 

verwenden, wenn Sie die Feldnamen in Ihrem Fall Klasse nicht ändern können Sie benötigen Implementieren Sie einen benutzerdefinierten Serializer wie hier erläutert Deserialization of case object in Scala with JSON4S

+0

Die Änderungen vorgenommen und es hat gut funktioniert. Vielen Dank. –

Verwandte Themen