簡體   English   中英

Akka-HTTP JSON序列化

[英]Akka-HTTP JSON serialization

如何控制spray-json的反序列化? 例如,我有一個定義為的類:

案例類A(名稱:字符串,值:字符串)

我想將以下JSON反序列化為A對象列表:

{
   "one": "1",
   "two": "2"
}

它應該變成:

List(A("one", "1"), A("two", "2"))

問題是該列表的默認JSON表示形式就是我所希望的:

[
   { "Name": "one", "Value": "1" },
   { "Name": "two", "Value": "2" }
]

我該怎么做?

您可以為要查找的結構編寫自己的自定義反序列化器:

  case class A(Name:String, Value:String)

  implicit object ListAFormat extends RootJsonReader[List[A]] {
    override def read(json: JsValue): List[A] = {
      json.asJsObject.fields.toList.collect {
        case (k, JsString(v)) => A(k, v)
      }
    }
  }

  import spray.json._

  def main(args: Array[String]): Unit = {
    val json =
      """
        |{
        |   "one": "1",
        |   "two": "2"
        |}
      """.stripMargin

    val result = json.parseJson.convertTo[List[A]]
    println(result)
  }

打印:

List(A(one,1), A(two,2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM