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

标签 json serialization d

我还是 D 的新手,但在

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/

    相关文章:

    java - 使用自定义 getter 为我不拥有的类反序列化 JSON

    java - 在 Android 上使用 Retrofit 正确解析 JSON

    python - 如何将 networkx (python) 节点序列化为 json 格式?

    java - 如何在 java 中通过 TCP 发送 OBJECT?

    d - 从 vibe.d 同步执行 std.process 有时会静默地挂起服务器

    algorithm - 在哪里可以找到标准数学函数的算法?

    javascript - 在将远程 JSON 文件提供给插件之前过滤它

    java - 从 mysql select 获取计数结果并解析到 TextView

    java - 默认情况下包含 Jackson JsonView 属性

    windows - 在D中逐字节读取文件