Add utility function _json_object_node_ensure_field()
This commit is contained in:
parent
3ba45a1d47
commit
14031f7faa
@ -798,4 +798,38 @@ namespace Matrix {
|
|||||||
return builder.get_root();
|
return builder.get_root();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Json.Node?
|
||||||
|
_json_object_node_ensure_field(Json.Node node,
|
||||||
|
string field_name,
|
||||||
|
Json.NodeType field_type)
|
||||||
|
requires(node.get_node_type() == Json.NodeType.OBJECT)
|
||||||
|
{
|
||||||
|
var root = node.get_object();
|
||||||
|
Json.Node? new_node;
|
||||||
|
|
||||||
|
if ((new_node = root.get_member(field_name)) == null) {
|
||||||
|
new_node = new Json.Node(field_type);
|
||||||
|
|
||||||
|
switch (field_type) {
|
||||||
|
case Json.NodeType.OBJECT:
|
||||||
|
new_node.set_object(new Json.Object());
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Json.NodeType.ARRAY:
|
||||||
|
new_node.set_array(new Json.Array());
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Other node types don’t need special treatment
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
root.set_member(field_name, new_node);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new_node;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user