我从HTTP请求中收到一个乱码JSON字符串,所以我正在寻找一个临时解决方案来选择JSON字符串。
request.params()返回:
[{"insured_initials":"Tt","insured_surname":"Test"}=, _=1329793147757,
callback=jQuery1707229194729661704_1329793018352
我希望从'{'开始到'}'结束。
我发现了很多与其他语言做类似事情的例子,但这样做的目的不仅是解决问题,还要学习Scala。有人请告诉我如何选择{....}部分吗?
答案 0 :(得分:5)
Regexps应该可以解决问题:
"\\{.*\\}".r.findFirstIn("your json string here")
答案 1 :(得分:4)
正如Jens所说,正则表达式通常就足够了。但是,语法有点不同:
"""\{.*\}""".r
创建一个scala.util.matching.Regex对象,它提供了您可能想要对正则表达式执行的典型查询方法。
在您的情况下,您只是对序列中第一次出现感兴趣,这是通过findFirstIn
完成的:
scala> """\{.*\}""".r.findFirstIn("""[{"insured_initials":"Tt","insured_surname":"Test"}=, _=1329793147757,callback=jQuery1707229194729661704_1329793018352""")
res1: Option[String] = Some({"insured_initials":"Tt","insured_surname":"Test"})
请注意,它会返回Option
类型,您可以在匹配中轻松使用该类型,以确定是否成功找到正则表达式。
编辑:要注意的最后一点是正则表达式通常与换行符不匹配,因此如果您的JSON未完全包含在第一行中,您可能需要考虑首先消除换行符。