Как я могу прочитать значение из массива словарей, хранящихся в GSettings с Vala?

Документы GSettings Vala не очень подробны, и я не могу найти способ прочитать элемент из массива словарей, хранящихся в GSettings. Прямо сейчас у меня есть это в моей схеме:

<key type="aa{ss}" name="services">
    <default>[{"id": "postgresql", "name": "PostgreSQL"}]</default>
    <summary></summary>
    <description></description>
</key>

Как я могу прочитать значения для ключей id а также name из первого значения services массив? Я перепробовал много возможностей (используя get_value("services") затем get_child(0)Например, чтобы прочитать словарь, но он просто ломается, и я не знаю, как его отладить.

2 ответа

Ваша строка формата aa{ss} предназначен для "массива массивов диктов строковых ключей и строковых значений" --- обратите внимание на двойной массив. Вы, вероятно, хотите просто a{ss}, то вы можете получить доступ к диктовке через get_child(0) как вы делали, затем найдите значения из варианта, возвращенного из этого, используя lookup_value(...)

Я обнаружил, что проблема в том, что мой экземпляр настроек не был правильно инициализирован при создании внутри static construct блок. Перемещение создания этого к запомненному методу решило проблему.

Другие вопросы по тегам