我仍然是 D 的新手,但是一个明显缺失的功能(对于 Web 开发人员)

http://www.digitalmars.com/d/2.0/phobos/std_json.html

是一个 mixin,它为结构和类的任意(嵌套)创建 JSON 序列化器和反序列化器。

IE。

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 的各种元编程功能?

谢谢,

克里斯。

最佳答案

是的,这是可能的(我现在有一个库可以在生产中完全做到这一点),并且 D 使用编译时反射可以很容易地实现。您需要阅读以下链接:

  • Traits (compile feature)
  • std.traits (library)
  • Template Mixins
  • String Mixins
  • 关于json - 如何在运行时在 D 中为结构/类自动生成 JSON 序列化器和反序列化器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7496944/

    10-10 07:22