Я начал кодировать Haskell несколько недель назад. Я пытаюсь сделать что-то вроде случайного генератора JSON, используя aeson.
Предположим, что у меня есть такой объект json:
{
name: "bob",
age: 13,
role: "admin"
}
Когда я использую aeson для его декодирования, я получаю следующее:
let Just json = decode str :: Maybe Object
-- fromList [("name",String "bob"),("age",Number 13.0),("role",String "admin")]
Я хочу создать список объектов JSON на основе "модели" боба:
[
{
name: <any random string>,
age: <any random number>,
role: <any random string>
},
...
]
Я знаю, что мне нужно fmap
по значениям HashMap, но я понятия не имею, как я могу создавать случайные значения на основе их типов.
Меня пока не беспокоят другие сложные значения, которые могут появиться в полях JSON. Сейчас я сосредоточен на числах и строках.
data Person = Person {name :: String, age :: Int, role :: String}
, преобразование в JSON и из него довольно тривиально. Можно сосредоточиться на вопросе о том, как сгенерировать случайное значение типаPerson
. - person chepner   schedule 06.09.2019Person
, как предлагает @chepner, вы можете сделать его экземпляромRandom
. Вот ответ, который показывает, как это сделать для другого типа: stackoverflow.com/a/47166776/126014 - person Mark Seemann   schedule 09.09.2019