2017-06-11 7 views
0

が欠落している私は、アルゴノートを学んだし、私は手動でJSONをデコードすることができるよ:purescript-アルゴノートジェネリックgDecodeJson:「タグ」プロパティが」

foo = """{"f":"xxx"}""" 
newtype Foo = 
    Foo { 
    f :: String 
    } 
derive instance genericFoo :: Generic Foo 
instance decodeJsonFoo :: DecodeJson Foo where 
    decodeJson json = do 
    obj <- decodeJson json 
    f <- obj .? "f" 
    pure $ Foo { f } 
main = either log (\x -> log $ show $ decodeJson x :: Either String Foo) (jsonParser foo) 

私が代わりにジェネリックを使用しようとしていると私は思いました

instance decodeJsonFoo :: DecodeJson Foo where 
    decodeJson = gDecodeJson 

が働くだろう。

をしかし、私は(Left "When decoding a Main.Foo: 'tag' property is missing")

外観を得ましたGeneric.pursで編集しましたが、私はジェネリックスを使い慣れていないため、わかりません。

私は何かを誤解していますか、またはこれをどのように修正できますか?

答えて

1

Foo { f: "xxx" }gEncodeJsonでエンコードしようとすると、出力フォーマットにtagというプロパティが含まれていることがわかります。これはデコードで不平を言います。

一般的なエンコード/デコードは、アプリのシリアライズフォーマットとして使用する場合に最も便利です。この場合は、別の場所からFooの値を指定した場合は、自分でコーデックを書き込むほうがよいでしょう。

+0

ok、cool。ありがとう – pt2121

関連する問題