有没有办法在Swift
中反序列化对自定义对象的JSON响应,而无需单独映射每个元素。
目前我正在使用SwiftyJSON
手动执行此操作,但仍需要我冗余地映射每个字段:
var myproperty1 = json["myproperty1"].stringValue
但是来自C#
背景,它就像一行代码一样简单:
JsonConvert.DeserializeObject<CustomObject>(jsonString); //No mapping needed.
来源 - http://www.newtonsoft.com/json/help/html/DeserializeObject.htm
由于我正在编写许多API端点,因此我想避免所有容易出错的样板映射代码。请记住,我的JSON响应将是多个级别的数组阵列。所以任何函数都需要递归。
类似问题:Automatic JSON serialization and deserialization of objects in Swift
答案 0 :(得分:3)
您可以使用EVReflection。您可以使用以下代码:
var user:User = User(json:jsonString)
或
var jsonString:String = user.toJsonString()
有关更详细的示例代码,请参阅GitHub页面
答案 1 :(得分:1)
您应该可以使用键值编码。您必须使您的对象成为NFSbject的子类以供KVC使用,然后您可以循环遍历JSON数据的元素并使用setValue:forKey为字典中的每个键分配值。
请注意,这将是危险的:如果目标对象不包含特定键的值,那么您的代码将崩溃,因此您的程序将在包含无效键的JSON数据上崩溃。不是一件好事。