Решил сделать свою библиотеку для работы с json. Существующие не нравятся тем, что обладают ужасным синтаксисом, так как не используют многие возможности из C++11 (например, std::initializer_list) Как известно, в json допускаются два вида коллекций данных - просто списки и ассоциативные контейнеры. Во многих языках, эти виды контейнеров декларативно описываются разным синтаксисом. В C++11 полявилась удобная штука, позволяющая задавать любые коллекции как {a, b, c}, что неявно преобразуется в std::initializer_list. Но для инициализации ассоциативного контейнера, к примеру, std::map, используется он же, наприимер {{key1, val1}, {key2, val2}}. Соответсвенно, при конструировании json объекта мы не можем отличить пришедший в конструктор std::initializer_list, описывающий ассоциативный контейнер от списка списков. Есть просто решение: выдумать отдельный синтаксис, который по аналогии с std::initializer_list и {a,b,c} будет преобразовываться в std::pair, например такой
{key: value}
std::make_pair(key, value)