2016年3月9日水曜日

PureScriptでJSONをパースする

ちょっと危険だが、文字列で表現されたJSONをPureScriptの任意の型にパースする方法。

JSON.purs

module JSON where
foreign import unsafeParse :: forall a. String -> a

JSON.js

"use strict"
// module JSON
exports.unsafeParse = function( json ) {
  return JSON.parse(json);
}

psciで実行

psci> type Foo = { a :: String, b :: Int }
psci> let o = unsafeParse "{\"a\": \"foo\", \"b\": 123 }" :: Foo
psci> print o.a
"foo"