我试图在转换为Json之前从Scala对象中提取某些字段。有没有一种简单的方法可以做到这一点。
如果我能用Json中的某些字段创建一个新的Json,它也会有效。
答案 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库。