当使用gobject_serialize时,Json-glib将一个布尔值序列化为false。

问题描述 投票:3回答:1

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

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?

vala
1个回答
0
投票

json-glib的默认序列化函数不会序列化一个属性,如果它包含它的默认值。对于布尔属性,这就是 false,除非另有明确规定。

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

© www.soinside.com 2019 - 2024. All rights reserved.