json.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 67 行

SCALA
67
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2006-2008, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id: JSON.scala 14384 2008-03-13 14:21:50Z michelou $package scala.util.parsing.json/**  * This object provides a simple interface to the JSON parser class. * *  @author Derek Chen-Becker <"java"+@+"chen-becker"+"."+"org"> */object JSON extends Parser {  /**   * Parse the given JSON string and return a list of elements. If the   * string is a JSON object it will be a list of pairs. If it's a JSON    * array it will be be a list of individual elements.   *   * @param input the given JSON string.   * @return      an optional list of of elements.    */  def parse(input: String): Option[List[Any]] =    phrase(root)(new lexical.Scanner(input)) match {      case Success(result, _) => Some(result)      case _ => None    }  /**   * Parse the given JSON string and return either a <code>List[Any]</code>   * if the JSON string specifies an <code>Array</code>, or a   * <code>Map[String,Any]</code> if the JSON string specifies an object.   *   * @param input the given JSON string.   * @return      an optional list or map.   */  def parseFull(input: String): Option[Any] =    parse(input) match {      case Some(data) => Some(resolveType(data))      case None => None    }  /**   * A utility method to resolve a parsed JSON list into objects or    * arrays. See the parse method for details.   */  def resolveType(input: List[Any]): Any = {    var objMap = Map[String, Any]()        if (input.forall {       case (key: String, value: List[_]) =>        objMap += (key -> resolveType(value))        true      case _ => false    }) objMap    else      input  }  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?