Очень важный вопрос. Может ли содержимое папки попасться раньше, чем сама папка? Для простоты считаем, что нет, и что вы нашли библиотеку для JSON.
Нужны два объекта: дерево (самодельный) и словарь ID (map: id → развилка дерева).
Для каждого элемента…
1. По parent id через словарь находим, куда его впихнуть. Если не нашли — вывести ошибку.
2. Если folder: создать развилку, присвоить ID, вписать её в словарь ID.
3. Если не folder: создать лист, присвоить ID и вписать в словарь ID (если надо по какой-то другой причине).
Я плохо знаю Си с диезом, так что поправляйте меня.
class Node {
List<Node> children;
List<Leaf> leaves;
}
class Leaf {
// в нём может быть что угодно
}
class Tree {
Node root;
}
Tree tree;
Dictionary<string, Node> idDic; // считается, что словарь нужен только на разбор JSON,
// и он временный