Как перебрать массив JSON в Vibe.D?

Как правильно использовать библиотеку Vibe.D для перебора массива Json?

Я пробовал это, но это дает мне ошибки компиляции:

foreach(string index, Json value; configuration["array1"]) {}

Это ошибка:

Error: opApply() function for Json must return an int

Полный код:

foreach(int index, Json pluginToLoad; configuration["PluginsToLoad"]) {
    import std.conv;
    logInfo(to!string(index));
    logInfo(pluginToLoad.get!string);
    logInfo("---");
}

2 ответа

Решение

В вашем коде index должно быть целочисленного типа - это почти то, что написано в сообщении об ошибке. Массив JSON всегда является простым массивом, ассоциативные из них называются объектами JSON.

Пример:

foreach (size_t index, Json value; configuration["array1"]) {}

или просто

foreach (index, value; configuration["array1"]) {} // type inference

Обновление: изменено int в size_t соответствовать фактической подписи opApply

По некоторым причинам использование ulong работает. Я предполагаю, что это ошибка?

foreach(ulong index, Json pluginToLoad; configuration["PluginsToLoad"])
Другие вопросы по тегам