从scala对象中提取某些字段< - > JSON

时间:2017-09-18 07:20:35

标签: json scala dictionary jackson

我试图在转换为Json之前从Scala对象中提取某些字段。有没有一种简单的方法可以做到这一点。

如果我能用Json中的某些字段创建一个新的Json,它也会有效。

2 个答案:

答案 0 :(得分:3)

您可以简单地提取出Json的值,而scala会为您提供相应的地图。例如:

 var myJson = Json.obj(
          "customerId" -> "xyz",
          "addressId" -> "xyz",
          "firstName" -> "xyz",
          "lastName" -> "xyz",
          "address" -> "xyz"
      )

假设您拥有上述类型的Json。要将其转换为地图,请执行以下操作:

var mapFromJson = myJson.value

这会为您提供一个类型的地图: scala.collection.immutable.HashMap $ HashTrieMap

答案 1 :(得分:0)

很难说没有更多细节。假设您有以下Scala案例类...

case class SomeObject(customerId: Long, addressId: Long, firstName: String, lastName: String, address: String)

...并且您想要提取'firstName','lastName'和地址字段,然后将对象转换为Json。使用play-json,您可以为SomeObject类的伴随对象定义隐式转换...

object SomeObject {

  implicit val someObjectWrites = new Writes[SomeObject] {
    def writes(object: SomeObject) = Json.obj(
      "firstName" -> object.firstName,
      "lastName" -> object.lastName,
      "address" -> object.address
    )
  }

}

然后您可以按如下方式使用代码:

val obj = SomeObject(12345, 678910, "John", "Doe", "My Address")
val json = Json.toJson(obj)

请注意,除了play-json之外,可能还有其他支持类似功能的JSON库。