2016-12-04 2 views
1

나는 데이터가 있습니다.FromJSON/ToJSON 수동

나는 MyData 그들이 실제 JSON 개체에 비해 약간의 차이라고하고 있기 때문에 아직 그런 FromJSONToJSON 또는 뭔가를 할 수있는 동안, 1 개 또는 2 필드를 수동으로 구문 분석합니다. 가능한가? 아니면이 경우 모든 필드를 수동으로 구문 분석하고 FromJSON/ToJSON을 사용하지 않아야합니까?

+1

관련 항목 : [JSON을 구문 분석하여 예약어가 포함 된 필드 이름] (http://stackoverflow.com/questions/18410686/parse-json-with-fieldnames-that-contain-reserved-keywords) – duplode

답변

2

템플릿 Haskell deriving abilities of aeson을 살펴 보겠습니다. 필드의 이름을 바꿀 수있는 옵션이 있습니다. , 나는 그런 내 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) 

다음을 추가하는 대신 Generic 도출의, 그리고

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

예를 들어, 나는 아래의 선언에 colourcolor 필드의 이름을 변경하고 싶은 말은 적절하게 명명 된 필드.

+0

그런데 템플릿 haskell을 사용하여 "imports"또는 "imports qualified"목록을 생성하는 방법이 있으므로 수동으로 추가하는 것처럼 컴파일됩니까? – Orado

+0

@Orado 내가 아는 것은 아니다. 어쩌면 다른 누군가가 그 생각을 갖게 될 것입니다. – Alec

+0

괜찮습니다. 'FromJSON' 구현의 모든 필드를 구문 분석하지 않는 것이 가능합니까? 다른 것들은 저에게 적합하지 않기 때문에 원하는 필드 만 구문 분석 할 수 있습니까? – Orado