On 21.02.2014 23:32, Eric Blake wrote:
On 02/21/2014 11:11 AM, Max Reitz wrote:
Currently, qdict_array_split() splits a QDict like
   { "0.a": 42, "1": 23, "2.b": 84 }
into the QList
   [ { "a": 42 } ]
with the QDict still being
   { "1": 23, "2.b": 84 }

However, it makes more sense to create the QList
   [ { "a": 42 }, 23, { "b": 84 } ]
and having emptied the QDict.

This is implemented by this series.

Question - in the code, we have a comment:

/**
  * qdict_flatten(): For each nested QDict with key x, all fields with key y
  * are moved to this QDict and their key is renamed to "x.y". For each
nested
  * QList with key x, the field at index y is moved to this QDict with
the key
  * "x.y" (i.e., the reverse of what qdict_array_split() does).
  * This operation is applied recursively for nested QDicts and QLists.
  */

With your new split rules, do we need a followup patch to qdict_flatten
that can regenerate the QDict with "%u" keys for non-dict members of the
QList?

If you want qdict_flatten() to return a QDict with "%u" keys, you'd have to specify a QList. However, this would no longer be a qdict_flatten(), but rather a qlist_flatten().

It would be easy to make use of qdict_flatten_qdict() and qdict_flatten_qlist() to implement qlist_flatten() as well, but since there is currently no such function, apparently there is no need for it. Of course, I could just implement it preemptively, but then I'd probably be asked for its purpose. ;-)


Max

Reply via email to