Scala JSON If键匹配值返回字符串



我有下面给出的JSon响应。如果元数据的Organic=true,则label='true-Organic',否则label='non-Organic'最终=>返回List或Map[modelId,label]

import net.liftweb.json.{DefaultFormats, _}

object test1 extends App {
val json_response =
"""{
"requestId": "91ee60d5f1b45e#316",
"error": null,
"errorMessages": [
],
"entries": [
{
"modelId":"RT001",
"sku": "SKU-ASC001",
"store": "New Jersey",
"ttlInSeconds": 8000,
"metadata": {
"manufactured_date": "2019-01-22T01:25Z",
"organic": "true"
}
},
{
"modelId":"RT002",
"sku": "SKU-ASC002",
"store": "livingstone",
"ttlInSeconds": 8000,
"metadata": {
"manufactured_date": "2019-10-03T01:25Z",
"organic": "false"
}
}
] }"""

试过了:

val json = parse(json_response)
implicit val formats = DefaultFormats
var map = Map[String, String]()
case class Sales(modelId: String, sku: String, store: String, ttlInSeconds: Int, metadata:
Map[String, String])
case class Response(entries: List[Sales])
val response = json.extract[Response]

在此之后,不确定如何继续。

这是对entries字段的直接map操作:

response.entries.map{ e =>
e.modelId -> 
if (e.metadata.get("organic").contains("true")) {
"true-Organic"
} else {
"non-Organic"
}
}

这将返回List[(String, String)],但如果需要,可以调用toMap将其转换为Map

相关内容

  • 没有找到相关文章

最新更新