为什么JSArray解析的行为会有所不同,具体取决于代码结构,而逻辑仍然存在?

时间:2014-03-03 09:23:44

标签: json scala parsing playframework

我正在进行小型重构,试图保持逻辑结果的完整性:

重构后:

        val mapped:Seq[Option[String]] = (mr.getNormalizedValue(1) \ "getapworkflowinfo1" ).as[JsArray].value.map(v => {
            (v \ "Description").as[String] match {
                case value if List("referral to electrophysiology").exists(value.toLowerCase.equals) =>
                    Some("true")
                case _ =>
                    None
            }}
        )
        mapped.flatten.lastOption

要:

        val referralIndicators: Seq[Boolean] =
            (mr.getNormalizedValue(1) \ "getapworkflowinfo1").as[JsArray].value
            // Step 1.1 Extracting and checking description
            .map(d => (d \ "Description").as[String].toLowerCase().equals("referral to electrophysiology"))
        // Step 2. Returning if at least once there was referral to electrophysiology
        Some(referralIndicators.exists(v => v)).map(v => v.toString)

哪个应该在逻辑上相等(并且应该在相同的输入上生成相同的输出)。

有效地改进了解析,重构代码中返回的结果比以前更好。

有人可以解释一下,这两者有什么不同?

0 个答案:

没有答案