Я использую SwiftyJSON для сериализации/десериализации данных JSON при общении с EntityFramework. Проблема в том, что для некоторых конечных точек EF ожидает увидеть атрибут «__type», чтобы правильно сопоставить его с классом .NET в бэкэнд. И этот атрибут «__type» должен быть быть самым первым атрибутом объекта JSON.SwiftyJSON порядок элементов внутри объекта JSON
Вот пример рабочей полезной нагрузки:
"changeSet" : [
{
"OriginalEntity" : {
"__type" : "outside_vendors_to_events:#QPWebOffice.Web",
"revenue" : 0,
"transactions_count" : 23,
"id" : 8,
"vendor" : "New",
"event_id" : 4
},
"Operation" : 3,
"Entity" : {
"__type" : "outside_vendors_to_events:#QPWebOffice.Web",
"revenue" : 0,
"transactions_count" : 2,
"id" : 8,
"vendor" : "New",
"event_id" : 4
},
"Id" : 0
}
]
Это работает отлично. Но если по какой-то причине __type будет двигаться ниже в объекте - сервер терпит неудачу. Теперь я знаю, что вы не можете гарантировать порядок элементов в словаре, но как еще это можно выработать?
Я создаю объект JSON в Swift, как это:
return JSON([
"__type": "outside_vendors_to_events:#QPWebOffice.Web",
"event_id": eventId,
"id": id,
"revenue": revenue,
"transactions_count": transactionCount,
"vendor": name == nil ? NSNull() : name!
])
Порядок, кажется, так же всегда, но это разные для разных классов у меня есть в приложении. И для некоторых из них - независимо от того, что я делаю - «__type» окажется в середине свойств JSON.
Любая идея была бы принята с благодарностью. И нет, я не могу изменить сервер.
Спасибо. Поскольку это только JSON -> String serialization, я закончил вручную создание строки из моего объекта JSON. Я ненавижу это, но это, кажется, самый простой выход из этого беспорядка. – sha
При работе со сломанными технологиями, часто лучше быть прагматичным :) –