这个问题暗示了如何减少样板代码或添加自定义功能,例如在Java中
@Setter(AccessLevel.PROTECTED) private String name;
或Jackson注释@JsonProperty
如何实现或模拟此功能?谢谢
不,您现在无法创建自定义属性。对于属性,可以使用下一个语法:
public string name { get; protected set; default = "42"; }
GObject类型的系统还支持Json序列化/反序列化的属性。这里是一个小例子(valac文件--pkg json-glib-1.0):
public enum MyEnum {
FOO, BAR, FOOBAR
}
public class MyObject : Object {
public string str { get; set; }
public MyEnum en { get; set; }
public int num { get; set; }
public MyObject (string str, MyEnum en, int num) {
this.str = str;
this.num = num;
this.en = en;
}
}
public static int main (string[] args) {
MyObject obj = new MyObject ("my string", MyEnum.FOOBAR, 10);
Json.Node root = Json.gobject_serialize (obj);
// To string: (see gobject_to_data)
Json.Generator generator = new Json.Generator ();
generator.set_root (root);
string data = generator.to_data (null);
// Output:
// ``{"str":"my string","en":2,"num":10}``
print (data);
print ("\n");
return 0;
}
您可以在ValaDoc上找到更多信息。