10
나는 다음 JSON을 aeson으로 구문 분석하려고합니다. 내가 무시하고 싶은 분야가 많이 있기 때문에예약 키워드가 포함 된 필드 이름을 사용하여 JSON을 구문 분석합니다.
{
"data": [
{
"id": "34",
"type": "link",
"story": "foo"
},
{
"id": "35",
"type": "link",
"story": "bar"
}
]
}
, 그것은 I should use GHC generics을 보인다. 그러나 하스켈 키워드 인 data
과 type
을 사용하는 데이터 유형 정의를 작성하는 방법은 무엇입니까? 물론 다음은 제공 : 당신은 GHC.Generics에 의존하지 않고 자신의 FromJSON
및 ToJSON
인스턴스를 작성할 수 있습니다 parse error on input `data'
data Feed = Feed {data :: [Post]}
deriving (Show, Generic)
data Post = Post {
id :: String,
type :: String,
story :: String
}
deriving (Show, Generic)
감사합니다. 이 접근법을'Generic'과 결합하는 것도 가능합니까? 예를 들어,'Post' 타입은'type' 속성을 가지고 있지 않습니다.'Feed'의'parseJSON'을 수동으로 구현하는 동안'Post derived (Generic) '를 가질 수없고 질문과 같이 결합 할 수 없습니다. . – mb21
마지막으로 JSON의'data' 속성을 없애기 위해'Feed' 데이터 유형이 정말로 필요한지 궁금 해서요. 아니면 직접 게시물에 직접 접근 할 수 있는지 궁금합니다. – mb21
@ mb21 [a]에는 FromJSON/ToJSON 인스턴스가 있으므로, 게시물 목록을 직렬화하는 것이 전부라면 'encode listOfPosts'로 직접 수행하십시오. 또한이 접근법을 Generic과 결합하여 Generic을 사용하여 다른 인스턴스처럼 Post의 인스턴스를 파생시키고 Feed 인스턴스를 수동으로 작성할 수 있습니다. 그냥 작동합니다. – bennofs