【问题标题】:Scala JSON deprecated in 2.11 - Is Argonaut as easy as scala.util.parsing.json?Scala JSON 在 2.11 中已弃用 - Argonaut 和 scala.util.parsing.json 一样简单吗?
【发布时间】:2014-06-14 01:06:12
【问题描述】:

解析像"""["test",["aaa", "bbb", "ccc"]]"""这样的JSON字符串

使用scala.util.parsing.json很容易:

// def jsonResponse = scala.io.Source.fromURL("http://en.wikipedia.org/w/api.php?format=json&action=opensearch&search=test").mkString
def jsonResponse = """["test",["aaa", "bbb", "ccc"]]"""

def responseStrings = scala.util.Try[List[String]] {
  val Some(List("test", words: List[_])) = scala.util.parsing.json.JSON.parseFull(jsonResponse)
  words.map{case w: String => w}
}

responseStrings.get foreach println

打印

aaa
bbb
ccc

如何使用Argonaut 以如此简单的方式做到这一点?

【问题讨论】:

    标签: json scala scala-2.11 argonaut


    【解决方案1】:

    以下是您在 Argonaut 中执行此操作的方法,它不依赖于在 Try 块中捕获匹配错误异常。

    object Argo {
      import argonaut._
      def argoTest(): Unit = {
        val input =  """["test",["aaa", "bbb", "ccc"]]"""
    
        val js: Option[List[String]] = for {
          json        <- Parse.parseOption(input)
          outerArray  <- json.array
          innerArray  <- outerArray match {
                          case h :: arr :: rest => h.string.filter(_ == "test").flatMap(_ => arr.array)
                          case _ => None
                        }
        } yield innerArray.flatMap(_.string)
        println(js)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-08
      • 2015-02-17
      • 2023-03-23
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多