mirror of
https://github.com/libvirt/libvirt.git
synced 2026-07-30 08:08:11 -05:00
util: json: Recursively deflatten objects virJSONValueObjectDeflatten
If a value of the first level object contains more objects needing deflattening which would be wrapped in an actual object the function would not recurse into them. By this simple addition we can fully deflatten the objects.
This commit is contained in:
+7
-1
@@ -1981,7 +1981,13 @@ virJSONValueObjectDeflattenWorker(const char *key,
|
||||
|
||||
/* non-nested keys only need to be copied */
|
||||
if (!strchr(key, '.')) {
|
||||
if (!(newval = virJSONValueCopy(value)))
|
||||
|
||||
if (virJSONValueIsObject(value))
|
||||
newval = virJSONValueObjectDeflatten(value);
|
||||
else
|
||||
newval = virJSONValueCopy(value);
|
||||
|
||||
if (!newval)
|
||||
return -1;
|
||||
|
||||
if (virJSONValueObjectHasKey(retobj, key)) {
|
||||
|
||||
@@ -1,17 +1,27 @@
|
||||
{
|
||||
"file": {
|
||||
"nest": {
|
||||
"even.objects": "can",
|
||||
"even.contain": "some",
|
||||
"even.more": {
|
||||
"deeply.nested": "objects",
|
||||
"deeply.needing": "deflattening",
|
||||
"deeply.some.even": "more",
|
||||
"deeply.some.than": {
|
||||
"others.thought.was": "even",
|
||||
"others.thought.completely": "necessary"
|
||||
},
|
||||
"perhaps": "flat value"
|
||||
"even": {
|
||||
"objects": "can",
|
||||
"contain": "some",
|
||||
"more": {
|
||||
"deeply": {
|
||||
"nested": "objects",
|
||||
"needing": "deflattening",
|
||||
"some": {
|
||||
"even": "more",
|
||||
"than": {
|
||||
"others": {
|
||||
"thought": {
|
||||
"was": "even",
|
||||
"completely": "necessary"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"perhaps": "flat value"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user