Замена XML для представления структур данных в C++

На работе у нас есть инструмент тестирования, который используется для отправки запросов к источнику данных. Инструмент принимает ввод в виде файлов 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, но открыт для любых форматов представления.

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
0
648
3

Ответы 3

YAML может быть тем, что вы ищете.

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

Вы можете рассмотреть возможность использования Lua (или другого языка сценариев). Вы получаете приятный синтаксис структуры данных (примерно такой же, как у JSON) со всеми возможностями языка программирования. Таким образом, у вас есть переменные (вы можете строить свои структуры данных по частям, символически объявлять повторяющиеся значения и т. д.), Циклы (тестовые данные часто повторяются), функции (думайте о них как о макросах для шаблонных конструкций в ваших данных).

Lua - особенно привлекательный кандидат для такого рода использования, потому что он небольшой (добавляет 100-200 КБ в вашу программу) и имеет довольно элегантный интерфейс с кодом C.

Другие вопросы по теме