2014-07-17 33 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