如何在Swift WITHOUT映射中将JSON反序列化为对象

时间:2015-06-15 20:39:30

标签: json swift serialization

有没有办法在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

2 个答案:

答案 0 :(得分:3)

您可以使用EVReflection。您可以使用以下代码:

var user:User = User(json:jsonString)

var jsonString:String = user.toJsonString()

有关更详细的示例代码,请参阅GitHub页面

答案 1 :(得分:1)

您应该可以使用键值编码。您必须使您的对象成为NFSbject的子类以供KVC使用,然后您可以循环遍历JSON数据的元素并使用setValue:forKey为字典中的每个键分配值。

请注意,这将是危险的:如果目标对象不包含特定键的值,那么您的代码将崩溃,因此您的程序将在包含无效键的JSON数据上崩溃。不是一件好事。