2014-07-17 21 views
0

我有隨機的JSON字符串包含字符串值時,他們是真正的數字,但我無法知道什麼字段時,他們可能會進入我的系統時。嘗試將json4s的值轉換爲整數

例如:

{ 
    "some_key":"1234", 
    "another_key":{ 
     "sub_key":"4243", 
     "a_string":"this is a valid string and should not be converted" 
    } 
} 

是否有任何人的簡單方式知道要儘量JSON值轉換爲使用json4s整數?

回答

1

想通了。這段代碼只是我需要的:

private def convertNumbers(json: JValue) = { 
    json.transformField { case JField(k, v) => v match { 
     case s: JString => Try(k -> JInt(s.s.toInt)).getOrElse(k -> s) 
     case o => (k -> o) 
     } 
    } 
    } 
1

不幸的是,因爲這些鍵被編碼爲字符串,所以您需要轉換它們。所以,你可以做這樣的事情:

val json = parse("""{some_key":"1234"}""") 
Try((json \ "some_key").values.toString.toInt) match { 
    case Success(i) => JInt(i) 
    case Failure(i) => s 
} 

這將返回一個JInt如果它可以轉換成int或JString否則

+0

謝謝,但不完全是我所需要的。 – chiappone