Нет прямого отображения между XML и JSON;XML несет информацию о типе (у каждого элемента есть имя), а также о пространстве имен.Поэтому, если каждый объект JSON не имеет встроенной информации о типе, преобразование будет с потерями.
Но это не обязательно имеет значение.Важно то, что потребитель JSON знает контракт данных.Например, учитывая этот XML:
<books>
<book author="Jimbo Jones" title="Bar Baz">
<summary>Foo</summary>
</book>
<book title="Don't Care" author="Fake Person">
<summary>Dummy Data</summary>
</book>
</books>
Вы можете преобразовать его в это:
{
"books": [
{ "author": "Jimbo Jones", "title": "Bar Baz", "summary": "Foo" },
{ "author": "Fake Person", "title": "Don't Care", "summary": "Dummy Data" },
]
}
И потребителю не нужно будет знать, что каждый объект в коллекции books
был book
объект.
Редактировать:
Если у вас есть XML-схема для XML и вы используете .NET, вы можете генерировать классы из этой схемы, используяxsd.exe.Затем вы можете проанализировать исходный XML-код в объектах этих классов, а затем использовать DataContractJsonSerializer
для сериализации классов как JSON.
Если у вас нет схемы, будет трудно обойти ручное определениеВаш формат JSON самостоятельно.