Я создаю API-интерфейс JSON REST (там много колпачков), и у меня уже есть Data.Aeson.Generic. В дальнейшем, serializedString будет {"x":10, "y":10}
Haskell JSON Rest API - как обобщить метаинформацию?
import qualified Data.Aeson.Generic as A
import Data.Data (Data, Typeable)
data Unit = Unit { x :: Int, y :: Int } deriving (Show, Eq, Data, Typeable)
example = do
let serializedByteString = A.encode (Unit 10 10)
Я хотел бы, чтобы мой апи ответить, как это за успехи:
{unit:{x:10, y:10}}
И это за неудачи
{error:"Didn't work!"}
Я думал что делает тип данных Response
, с Response
и Error
конструкторами. Легко сериализовать Error
, но ответ может иметь все виды разных объектов, а не отправлять обратно {data:{...}}
Я бы хотел сделать {unit:{...}}
.
Есть ли способ определить мой конструктор значений Response
так, чтобы он работал с чем-либо, производящим Data
? Есть ли способ узнать, что такое имя конструктора значений, когда я перехожу к сериализации моего объекта? show
знает это как-то. Благодаря!