【发布时间】:2012-12-01 20:22:48
【问题描述】:
我想知道是否可以在 Scala 中对 Jackson JSON objects 进行模式匹配。我们目前在一个项目中大量使用jackson-module-scala,并且能够从 Json ObjectNode/JsonNode 对象的模式匹配中受益。
如果这不可能,我将如何添加此功能?我正在考虑从 JsonNode/ObjectNode 到 MyClass 的隐式转换,其中 MyClass 将有 unapply 方法,进行 JsonNode.toString 和正则表达式匹配。如果我的逻辑是正确的,那么我可以对 JsonNode 对象进行模式匹配。当然,可能有更好的方法我不知道,或者由于我还不知道的原因,这个方法可能不起作用。为了说明我的情况,我希望能够执行以下操作:
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
val json = mapper.createObjectNode()
.put("key1","value1")
.put("key2","value2")
.put("key3","value3")
json match {
case MyClass("key1", "value1", "key2", y) => println("Found key1 with value1, where key2 is " + y)
case MyClass("key1", x) => println("Key1 value is " + x)
...
_ => println("No match found")
}
【问题讨论】:
-
除了在这里提问之外,您可能还想在 Jackson 邮件列表上提问(Scala 模块还没有单独的邮件,只有普通的 'user@jackson.codehaus.org')。
-
感谢您的想法,我也将问题发布到 Jackson 邮件列表。
标签: scala pattern-matching jackson