Я все еще новичок в D, но очевидная недостающая функция (для веб-разработчиков) в
http://www.digitalmars.com/d/2.0/phobos/std_json.html
- это миксин, который создает сериализаторы и десериализаторы JSON для произвольных (гнезд)) структур и классов.
т.е.
struct Dog {
string name;
int age;
}
struct Person {
mixin JSON;
string name;
int age;
string[] favouriteFoods;
Dog dog;
bool retired () { return age > 65 };
}
, затем сможет
auto p = Person("\"name\":\"Fred\",\"age\":45,\"favouriteFoods\":[\"cheese\",\"bananas\"],\"dog\":{\"name\":\"Rover\",\"age\":7}");
p.dog.name -> "rover"
p.favouriteFoods[1] -> "bananas"
p.retired() -> false
и
p.toJSON(); -> "\"name\":\"Fred\",\"age\":45,\"favouriteFoods\":[\"cheese\",\"bananas\"],\"dog\":{\"name\":\"Rover\",\"age\":7}"
Было бы это возможно при использованииразличные возможности метапрограммирования D?
Спасибо,
Крис.