Позвольте мне начать с того, что я не фанат XML. Я считаю, что это слишком многословно, и как разработчик, который целыми днями использует Javascript, я обычно ненавижу работать с XML. Различные библиотеки, которые я использовал для преобразования его в пригодный для использования формат, кажутся несовершенными и делают странные вещи, такие как перенос массивов в переменные с именем «$».

По определению, Javascript и JSON просто идут рука об руку, и работа с JSON упрощает мою жизнь.

Тем не менее, недавно я столкнулся с одной особенностью XML, с которой JSON просто не может сравниться: хранение данных о данных, также называемых метаданными.

Допустим, у нас есть массив в формате JSON:

Аналогичный массив в XML:

Все идет нормально. Проблема возникает, когда вы хотите добавить информацию о каждом результате. Допустим, вы хотите добавить информацию об управлении доступом. xml может выглядеть так:

В JSON просто нет хорошего способа сделать это. Вы можете добавить новый атрибут к каждому объекту результата JSON, но это загрязняет данные информацией о данных. Если ваши данные становятся более сложными, чем простой массив, и вам нужны метаданные на разных уровнях, это может очень быстро запутать.

Есть несколько предложенных способов добавить метаданные в JSON, но нет стандарта, а это значит, что для него не создан инструментарий. Если вы знаете иначе, дайте мне знать.