Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.72 KB | None | 0 0
  1. class JSONParser extends JavaTokenParsers {
  2.   def obj: Parser[Map[String, Any]] =
  3.     "{" ~> repsep(member, ",") <~ "}" ^^ (Map() ++ _)
  4.  
  5.   def arr: Parser[List[Any]] =
  6.     "[" ~> repsep(value, ",") <~ "]"
  7.  
  8.   def member: Parser[(String, Any)] =
  9.     stringLiteral ~ ":" ~ value ^^ { case name ~ ":" ~ value => (name, value) }
  10.  
  11.   def value: Parser[Any] =
  12.     obj |
  13.     arr |
  14.     stringLiteral |
  15.     floatingPointNumber ^^ (_.toDouble) |
  16.     "null" ^^ (x => null) |
  17.     "true" ^^ (x => true) |
  18.     "false" ^^ (x => false)
  19.  
  20.   def apply(input: String): Option[Any] = parseAll(value, input) match {
  21.     case Success(result, _) => Some(result)
  22.     case Failure(msg, _) =>
  23.       println(s"Error: $msg")
  24.       None
  25.   }
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement