我试图从Scala中的JSON格式的字符串中提取特定的字符串值。但是,这将用于生产环境,所以我关注效率。目前,我目前正在使用以下代码:
val r = """identifier=\{S: ([\w\.]+),""".r
var identifier: String = "";
r.findAllIn(queryResult toString).matchData foreach {
m => identifier = m.group(1)
}
我关心的是效率。我不需要验证JSON本身(这是由AWS生产的,所以我认为它很好,即使它不是,我可以&# 39;不要改变它,所以没有充分的理由去解析它的所有开销。
那就是说,我可以用正则表达式更有效地做到这一点,还是我必须下到找到第一次出现的标识符= {S:'然后下一次出现','之后,获得两者之间的子串?我试图用r.findFirstIn
做一些事情,但我无法找到一种从中提取我想要的群体的方法。
还是有其他一些超级高效的东西,我不知道我可以做什么?
答案 0 :(得分:0)
你想要第一场比赛:
r.findFirstMatchIn(queryResult.toString).map(_.group(1))
(将是Option[String]
。)
那就是说,我每次都使用流式JSON解析器而不是正则表达式。是的,正则表达式更快,但除非这是真的瓶颈,否则我会更加担心准确性。