1
在我的應用程序中,我將通過dbus獲得一條消息,該消息必須使用gvariant函數進行解析。對於複雜格式的gvariant解析
格式字符串是G_VARIANT_TYPE( 「一個(YSB((SSS)(SSS)))」
樣品代碼構建一個gVariant是如下
INT ParseVariant(GVariant *值);
int main()
{
GVariantBuilder *builder;
GVariant *value;
builder = g_variant_builder_new (G_VARIANT_TYPE ("a(ysb((sss)(sss)))"));
g_variant_builder_add (builder, "(ysb((sss)(sss)))", 'J', "Test1", TRUE, "Hn", "di", "hedfs", "dd", "dr", "hdf");
g_variant_builder_add (builder, "(ysb((sss)(sss)))", 'J', "Test2", TRUE, "Hn", "di", "hedfs", "dd", "dr", "hdf");
//g_variant_builder_add (builder, "(ysb((sss)(sss)))", 'J', "Test3", TRUE, "Hn", "di", "hedfs", "dd", "dr", "hdf");
GVariant *result = g_variant_new ("((yu)ya(ysb((sss)(sss))))", 'R', 23, 'E', builder);
g_variant_builder_unref (builder);
ParseVariant (result);
}
要尋找一個解析器函數使用(ParseVariant(結果)),我可以提取所述變體的結果中的每個元素。
任何幫助是高度appre ciated。
在此先感謝。
?總之,g_variant_get是你需要使用的。 https://developer.gnome.org/glib/stable/glib-GVariant.html#g-variant-get。如果嘗試後仍然有問題,請發佈具體問題。 – kaylum 2015-04-06 04:05:31