2016-12-04 8 views
1

私はデータを持っています。FromJSON/ToJSONは手動

私はまだFromJSONToJSONまたはそのような何かを持っていることができることながらMyDataに彼らは、実際のJSONオブジェクトに比べてわずかに異なると呼ばれているので、手動で1つのまたは2のフィールドを解析します。出来ますか?または、この場合、手動ですべてのフィールドを解析して、FromJSON/ToJSONを使用しないでください。

+1

関連性:[JSONの構文解析で予約されたキーワードを含むフィールド名](http://stackoverflow.com/questions/18410686/parse-json-with-fieldnames-that-c​​ontain-reserved-keywords) – duplode

答えて

2

テンプレートHaskell deriving abilities of aesonを見てみましょう。フィールドの名前を変更するのに役立つオプションがあります。例えば、私は以下の宣言でcolourcolorフィールドの名前を変更したいと言う:

data MyData = MyData { address :: String 
        , streetNumber :: Integer 
        , isApartment :: Bool 
        , color :: String 
        } 

その後、代わりにGenericを導出する、私はその後、私のToJSONFromJSONインスタンスが持つ以下の

{-# LANGUAGE TemplateHaskell #-} 
import Data.Aeson.TH 

data MyData = MyData { address :: String 
        , streetNumber :: Integer 
        , isApartment :: Bool 
        , color :: String 
        } 

$(deriveJSON defaultOptions{ 
    constructorTagModifier = \f -> if f == "color" then "colour" else f 
    } ''MyData) 

を追加します適切な名前のフィールド。

+0

ところで、テンプレートのhaskellで "imports"や "qualified qualified"のリストを生成し、手動で追加するかのようにコンパイルする方法がありますか? – Orado

+0

@Orado私が知っているわけではありません。たぶん誰かがそれについてのアイディアを持っているでしょう。 – Alec

+0

大丈夫です。 'FromJSON'実装のすべてのフィールドを解析しないようにすることは可能でしょうか?他のものは私にとって無関係なので、私が望むものだけを解析しますか? – Orado