На работе у нас есть инструмент тестирования, который используется для отправки запросов к источнику данных. Инструмент принимает ввод в виде файлов XML. XML-файлы были просты и легко анализировались до тех пор, пока структуры данных, которые мы пытались представить, были на один уровень. Но теперь эти структуры данных стали более сложными, и представление их в XML становится очень запутанным. Есть мысли о том, что я могу использовать для представления структур данных вместо XML?
Пример:
До:
class Foo {
int userId;
string name;
string address;
string eMail;
}
Теперь:
class Foo {
int userId,
string name,
vector<Location> loc,
map<string, string> attributes;
}
class Location {
Address addr; //class Address
vector<LocatedTime> lcTime; //class LocatedTime
Position ps; //class Position
}
... и так далее, чтобы иметь любое количество вложенных структур.
Я склонялся к JSON, но открыт для любых форматов представления.

YAML может быть тем, что вы ищете.
Вы смотрели Буферы протокола? Двоичная сериализация, которая довольно эффективна с точки зрения времени обработки и места для хранения. В настоящее время «должным образом» поддерживается в C++, Java и Python, при этом поступает больше реализаций (от третьих сторон, таких как я; я реализую порт C#).
Вы можете рассмотреть возможность использования Lua (или другого языка сценариев). Вы получаете приятный синтаксис структуры данных (примерно такой же, как у JSON) со всеми возможностями языка программирования. Таким образом, у вас есть переменные (вы можете строить свои структуры данных по частям, символически объявлять повторяющиеся значения и т. д.), Циклы (тестовые данные часто повторяются), функции (думайте о них как о макросах для шаблонных конструкций в ваших данных).
Lua - особенно привлекательный кандидат для такого рода использования, потому что он небольшой (добавляет 100-200 КБ в вашу программу) и имеет довольно элегантный интерфейс с кодом C.