Как я могу прочитать значение из массива словарей, хранящихся в 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
блок. Перемещение создания этого к запомненному методу решило проблему.