JSON - это нотация для сериализации объектов. Это его цель и цель. XML предназначен для определения языков разметки, но мне не нравится, если люди используют этот факт, как будто его нельзя использовать для данных. Я считаю, что XML очень подходит для представления множества структур данных. Тем не менее, XML является довольно универсальным, и это приводит к некоторым накладным расходам с точки зрения спецификации, обозначения и размера инструмента.
Прежде всего, выясните, что именно вам нужно. Нужно ли передавать данные в более общем смысле или достаточно обойти объекты? Будут ли вам нужны такие вещи, как пространства имен? Выберите технологию, которая делает то, что вам нужно, но не более того. Но помните о будущем расширении.
Во-вторых, рассмотрим инструменты. XML имеет отличную поддержку практически на любом языке. Существуют методы представления в памяти (DOM), привязки объектов (JAXB в Java), синтаксического анализа (SAX) ... Имеет ли JSON такую же поддержку в вашей целевой среде? С другой стороны, JSON чрезвычайно удобен на стороне клиента в сочетании с JavaScript.
Я полагаю, что вы сможете делать то, что вам нужно, независимо от выбора технологии, и в каждом варианте есть место для оптимизации. Но есть еще одна заключительная вещь: возможно, вам не нужно выбирать. Иногда бывает очень просто разрешить сериализацию данных в формате JSON или XML. Будучи программистом на Java, это единственный пример, который я могу придумать, но в JAX-WS есть методы для получения данных от веб-сервисов в виде XML, JSON или, возможно, даже других форматов с минимальной адаптацией кода.