title: How to parse "a(oa{sv})" dbus type?
body: <p>I am parsing the response to "net.connman.Manager.GetServices" function, which looks like this:</p>
  
  <pre><code>&lt;method name="GetServices"&gt;
      &lt;arg name="services" type="a(oa{sv})" direction="out"/&gt;
  &lt;/method&gt;
  </code></pre>
  
  <p>which is quite complex structure.</p>
  
  <p>What I got so far is this:</p>
  
  <pre><code>GVariant* result = ... // response containing data
  GVariantIter* iter1;
  g_variant_get( result, "a(oa{sv})", &amp;iter1 );
  
  GVariant* child = g_variant_iter_next_value( iter1 );
  while ( nullptr != child )
  {
      gchar* string;
      GVariant* data;
      g_variant_get( child, "(oa{sv})", &amp;string, &amp;data );
  
      // how to access inner array?
  
      g_variant_unref( child );
      child = g_variant_iter_next_value( iter1 );
  }
  
  g_variant_iter_free( iter1 );
  </code></pre>
  
  <p>So, how do I access the inner array data?</p>
  
  <p>I tried this:
          GVariantIter* iter2;
          g_variant_get( data, "a{sv}", &amp;iter2 );
          GVariant* child2 = g_variant_iter_next_value( iter2 );</p>
  
  <p>but it fails with some alignment error:</p>
  
  <pre><code>**
  GLib:ERROR:../../glib-2.48.2/glib/gvarianttypeinfo.c:163:g_variant_type_info_check: assertion failed: (info-&gt;alignment == 0 || info-&gt;alignment == 1 || info-&gt;alignment == 3 || info-&gt;alignment == 7)
  Aborted
  </code></pre>