1
指定類型讀取JSON場我JSON如下所示:在這取決於其他領域
{
"properties" : {
"timestamp" : "1970-01-01T01:00:00+01:00",
"attributes" : [
{
"name" : "Weather",
"value" : "Cloudy",
"fieldDataType" : "string"
},
{
"name" : "pH",
"value" : 7.2,
"fieldDataType" : "double"
},
{
"name" : "Quality Indicator",
"value" : 2,
"fieldDataType" : "integer"
}
]
}
,我想使用JSON播放庫解析它。我已經能夠處理「時間戳」,但由於其類型由「fieldDataType」確定,因此難以解析「值」字段。到目前爲止,我有:
sealed trait AttributeValue
case class AttributeInt(value: Integer) extends AttributeValue
case class AttributeDouble(value: Double) extends AttributeValue
case class AttributeString(value: String) extends AttributeValue
case class Attribute (name: String, value: AttributeValue)
object Attribute {
implicit val attributeReads: Reads[Attribute] = (
(JsPath \ "name").read[String] and
(JsPath \ "fieldDataType").read[String] // ???
)(Attribute.apply _)
}
我希望能夠閱讀「fieldDataType」,然後,根據其價值,在「值」字段中讀取。所以如果「fieldDataType」是字符串,那麼讀取「value」作爲字符串,如果「fieldDataType」是一個「整數」,然後讀取「值」作爲整數等。