vala - Json-glib 在使用 gobject_serialize 时序列化一个值为 false 的 bool 值

标签 vala

我正在尝试序列化下面的类:

public class Person : GLib.Object {
    public string name { get; set; }
    public int age { get; set; }
    public bool alive { get; set; }

    public Person (string name, int age, bool alive = true) {
        Object (
            name: name,
            age: age,
            alive: alive
        );
    }
}

public int main () {
    var person = new Person ("mike", 33, false);
    var node = Json.gobject_serialize (person);

    string obj = Json.to_string (node, true);
    print (obj+"\n");

    return 0;
}

虽然我希望输出是...

{
    "name": "mike",
    "age": 32,
    "alive": false
}

我正在……

{
  "name": "mike",
  "age": 32
}

即使值为 false,我如何序列化 bool 值?

最佳答案

json-glib 的默认序列化函数不会序列化包含默认值的属性。对于 bool 属性,这是 false,除非另有明确说明。

为确保在这种情况下确实发生序列化,您应该显式实现 Serializable.serialize_property()方法自己。

关于vala - Json-glib 在使用 gobject_serialize 时序列化一个值为 false 的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61787973/

相关文章:

introspection - Vala VAPI 和 GObject Introspection 之间有什么关系?

segmentation-fault - 使用 Vala 自定义 GTK 小部件

linux - 为 Linux 创建调整

vala - 如何从 DataInputStream 读取 8 字节数据并将其解释为 Vala 中的 double

vala - 使用 Val 和 GTK3 在屏幕更新之间插入延迟

使用 Vala 进行日志记录

c - Vala - 常量而不是魔数(Magic Number)

linux - Vala 和 PolicyKit

vala - Gee HashMap 包含方法作为值

c - Vala(类 C# 语言)编译成 C?