Как перебрать массив 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"])