2017-02-20 105 views
1

我有一个角度的应用程序,发送到服务器的请求,像这样:Scala如何将JsonAST.JValue转换为类型?

$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) 

它显示了在服务器上是这样的:

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)))))) 

有没有办法将其转换为一个列表[部分]?

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

回答

1

如果在JSON和的情况下类

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

,如果你不能在你的案件类更改字段名称使用相同的字段名称,你需要它会更容易按照这里的说明执行自定义串行器Deserialization of case object in Scala with JSON4S

+0

进行了更改并且工作正常。谢谢。 –