Serialize Map[String, Any] with spray json

前端 未结 2 492
南旧
南旧 2020-12-30 03:21

How do I serialize Map[String, Any] with spray-json? I try

val data = Map(\"name\" -> \"John\", \"age\" -> 42)
import spray.json._
import DefaultJsonPr         


        
相关标签:
2条回答
  • 2020-12-30 03:42

    Here's an implicit converter I used to do this task:

      implicit object AnyJsonFormat extends JsonFormat[Any] {
        def write(x: Any) = x match {
          case n: Int => JsNumber(n)
          case s: String => JsString(s)
          case b: Boolean if b == true => JsTrue
          case b: Boolean if b == false => JsFalse
        }
        def read(value: JsValue) = value match {
          case JsNumber(n) => n.intValue()
          case JsString(s) => s
          case JsTrue => true
          case JsFalse => false
        }
      }
    

    It was adapted from this post in the Spray user group, but I couldn't get and didn't need to write nested Sequences and Maps to Json so I took them out.

    0 讨论(0)
  • 2020-12-30 03:58

    Another option, which should work in your case, is

    import spray.json._
    import DefaultJsonProtocol._
    
    data.parseJson.convertTo[Map[String, JsValue]]
    
    0 讨论(0)
提交回复
热议问题