如何在D中自动为运行时的结构/类生成JSON序列化器和反序列化器?

时间:2011-09-21 08:43:10

标签: json serialization d

我还是D的新手,但是

中的一个明显缺失的功能(针对网页开发人员)

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

是一个mixin,它为任意(嵌套)结构和类创建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?

的各种元编程功能是否可行

谢谢,

克里斯。

1 个答案:

答案 0 :(得分:4)

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