-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SNOW-1628247: Fix Jackson Scala module Compatibility Issue #145
Conversation
} | ||
} | ||
|
||
private def scalaToJson(node: Any): String = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
let's simplify this function
private def scalaToJson(input: Any): String =
input match {
// Scala's None and Python's None are different.
case null => "null"
case str: String => s""""$str""""
case _: Int | _: Short | _: Long | _: Byte | _: Double | _: Float |
_: Boolean => input.toString
// only supports String keys
case map: Map[String, _] => map.map {
case (key, value) => s"${scalaToJson(key)}:${scalaToJson(value)}"
}.mkString("{", ",", "}")
// Seq is the most popular collection type in Scala,
// It is parent type of all List types.
case seq: Seq[_] => seq.map(scalaToJson).mkString("[", ",", "]")
// I am not sure If seq can match Array too, so explicitly match Array here.
// You can test if it is necessary.
case arr: Array[_] => scalaToJson(arr.toSeq)
case _ =>
throw new UnsupportedOperationException(s"Unsupported Type: ${input.getClass.getName}")
}
"stringKey" -> "stringValue", | ||
"nestedMap" -> Map("insideKey" -> "stringValue", "insideList" -> Seq(1, 2, 3)), | ||
"nestedList" -> Seq(1, Map("nestedKey" -> "nestedValue"), Array(1, 2, 3))) | ||
val jsonString = Utils.mapToJson(map) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add a hard code string comparison here.
assert(jsonString == "<the expected output>"
Otherwise, we don't know if the output of mapToJson
is correct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Please answer these questions before submitting your pull requests. Thanks!
What GitHub issue is this PR addressing? Make sure that there is an accompanying issue to your PR.
Fixes #NNNN
Fill out the following pre-review checklist:
Please describe how your code solves the related issue.
Replace this with a short description of how your code change solves the related issue.
Pre-review checklist
(For Snowflake employees)