Недавно я написал небольшую библиотеку с открытым исходным кодом, которая позволяет быстро и легко десериализовать словари в объекты Swift: https://github.com/isair/JSONHelper
Использование это, десериализация данных становится такой же простой, как это:
var myInstance = MyClass(data: jsonDictionary)
или
myInstance <-- jsonDictionary
И модели должны выглядеть только так:
struct SomeObjectType: Deserializable {
var someProperty: Int?
var someOtherProperty: AnotherObjectType?
var yetAnotherProperty: [YetAnotherObjectType]?
init(data: [String: AnyObject]) {
someProperty <-- data["some_key"]
someOtherProperty <-- data["some_other_key"]
yetAnotherProperty <-- data["yet_another_key"]
}
}
Что в вашем случае было бы:
struct Person: Deserializable {
var name: String?
var email: String?
var password: String?
init(data: [String: AnyObject]) {
name <-- data["name"]
email <-- data["email"]
password <-- data["password"]
}
}
Я полагаю, что это - то, что Вы хотите.
Часть этой изящной утилиты позволяет Вам просматривать пространства имен/классы/свойства на локальных и удаленных ПК, не говоря уже о генерировании кода WMI в VBScript/C#/VB на лету. Очень полезный.
Кроме того, исходный код, используемый для создания утилиты, включен в загрузку, которая могла обеспечить ссылку, если бы Вы хотели создать свой собственный браузер как интерфейс.
Эта страница MSDN идет посредством перечисления доступных классов: Как к: Перечислите Классы в Пространстве имен WMI
для получения свойств от класса:
ManagementPath l_Path = new ManagementPath(l_className);
ManagementClass l_Class = new ManagementClass(myScope, l_ManagementPath, null);
foreach (PropertyData l_PropertyData in l_Class.Properties)
{
string l_type = l_PropertyData.Type.ToString());
int l_length = Convert.ToInt32(l_PropertyData.Qualifiers["maxlen"].Value);
}