【发布时间】:2019-11-23 10:42:04
【问题描述】:
我有一个像下面这样的 json 文件
{
"Item Version": 1.0,
"Action2": "true12",
"Item Creation Time": "2019-04-14 14:15:09",
"Trade Dictionary": {
"Country": "India",
"TradeNumber": "1",
"action": {
"Action2": true,
"Action1": false
},
"Value": "XXXXXXXXXXXXXXX"
},
"Payments": {
"abc": "def",
"Payment Details": [{
"Payment Date": "2019-04-11",
"Payment Type": [{
"Payval": "myval "
}]
}]
}
}
我有一个这样的 scala 代码
def secondFlatten(map: Map[String, Any]):Map[String, Any]={val c=map.flatten {
val c=map.flatten {
case ((key, map : Map[String, Any])) => {
map.flatten {
case ((innerKey: String, l: List[Map[String, Any]])) => l.head.flatten
{
case ((key1: String, l1: List[Map[String, Any]]))=>l1.head.map{case (x:String, y: Any)=> (s"$key->$innerKey->$key1->$x"-> y)}
case ((key1: String, m1 : Map[String, Any])) => m1.map{case (x:String, y: Any)=> (s"$key->$innerKey->$key1->$x"-> y)}
case (key1: String, value1: String) => Map(s"$key->$innerKey->$key1"-> value1)
}
case ((innerKey: String, m : Map[String, Any])) => m.map{case (x:String, y: Any)=> (s"$key->$innerKey->$x"-> y)}
case (innerKey: String, value: String) => Map(s"$key->$innerKey"-> value)
}
}
case ((key, value)) => Map(key -> value)
}.toMap
return c
}
返回这样的值
(付款->付款明细->付款日期,2019-04-11)
(贸易字典->价值,XXXXXXXXXXXXXXX)
(付款->付款明细->付款类型->Payval,myval)
(贸易词典->国家,印度)
(贸易字典->贸易编号,1)
(交易字典->action->Action1,false)
(Action2,true12)
(项目版本,1.0)
(交易字典->action->Action2,true)
(物品创建时间,2019-04-14 14:15:09)
(付款->abc,def)
有没有办法写一个递归函数而不是放同一种case语句???
【问题讨论】: