in s2core/src/main/scala/org/apache/s2graph/core/JSONParser.scala [240:278]
def jsValueToInnerVal(jsValue: JsValue, dataType: String, version: String): Option[InnerValLike] = {
val ret = try {
val dType = InnerVal.toInnerDataType(dataType.toLowerCase())
jsValue match {
case n: JsNumber =>
dType match {
case InnerVal.STRING => Some(InnerVal.withStr(jsValue.toString, version))
// case t if InnerVal.NUMERICS.contains(t) =>
case InnerVal.BYTE | InnerVal.SHORT | InnerVal.INT | InnerVal.LONG | InnerVal.FLOAT | InnerVal.DOUBLE =>
Some(InnerVal.withNumber(n.value, version))
case _ => None
}
case _s: JsString =>
val s = TemplateHelper.replaceVariable(System.currentTimeMillis(), _s.value)
dType match {
case InnerVal.STRING => Some(InnerVal.withStr(s, version))
case InnerVal.BOOLEAN => Some(InnerVal.withBoolean(s.toBoolean, version))
// case t if InnerVal.NUMERICS.contains(t) =>
case InnerVal.BYTE | InnerVal.SHORT | InnerVal.INT | InnerVal.LONG | InnerVal.FLOAT | InnerVal.DOUBLE =>
Some(InnerVal.withNumber(BigDecimal(s), version))
case _ => None
}
case b: JsBoolean =>
dType match {
case InnerVal.STRING => Some(InnerVal.withStr(b.toString, version))
case InnerVal.BOOLEAN => Some(InnerVal.withBoolean(b.value, version))
case _ => None
}
case _ =>
None
}
} catch {
case e: Exception =>
logger.error(s"jsValueToInnerVal: jsValue = ${jsValue}, dataType = ${dataType}, version = ${version}", e)
None
}
ret
}