Aşağıdaki JSON'u aeson ile ayrıştırmaya çalışıyorum. Ben görmezden istediğiniz alanı bir sürü olduğundanAyrılmış anahtar kelimeler içeren alan adlarıyla JSON'yi ayrıştırın
{
"data": [
{
"id": "34",
"type": "link",
"story": "foo"
},
{
"id": "35",
"type": "link",
"story": "bar"
}
]
}
, bu I should use GHC generics görünüyor. Ancak, data
ve type
gibi Haskell anahtar sözcüklerini kullanan bir veri türü tanımı nasıl yazılır? Tabii şu verir: Sen GHC.Generics dayanmadan kendi FromJSON
ve ToJSON
örneklerini yazabilir 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)
Teşekkürler, güzel çalışıyor! Bu yaklaşımı 'Jenerik' ile birleştirmek de mümkün olabilir mi? "Post" türünde "type" özelliği bulunmadığını söyleyin, "Feed" in "parseJSON" komutunu manuel olarak uygulayarak Post türetme (Generic) 'e sahip olamayacağım ve daha sonra bunları sorudaki gibi birleştiremeyeceğim . – mb21
Son olarak, JSON'daki "data" özniteliğinden kurtulmak için veya Feed'e doğrudan bir şekilde ulaşıp ulaşamayacağımı öğrenmek için "Feed" veri türüne gerçekten ihtiyacım olup olmadığını merak ediyordum. – mb21
@ mb21 [a] FromJSON/ToJSON örneklerine sahiptir, yani yapmak istediğiniz tek şey İletilerin bir listesini serileştirmekse, bunu doğrudan 'encode listOfPosts' ile yapın. Ve yaklaşımı Generic ile birleştirebilirsiniz, sadece Post için örneği Jenerik kullanarak herhangi bir başka örnek gibi alın ve örneği Feed'e elle yazınız. Sadece işe yarıyor. – bennofs