如何从对象列表创建JSON字符串?

时间:2015-04-16 10:58:45

标签: ios swift ios8 nsjsonserialization

我有一个自定义对象列表。自定义对象中的每个属性都是String类型。我有一个问题,将该对象列表转换为JSON字符串,以便我可以将其发送到Web服务:

var bytes = NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.allZeros, error: nil)
    var jsonObj = NSJSONSerialization.JSONObjectWithData(bytes!, options: nil, error: nil) as! [Dictionary<String, String>]

data是一个对象列表。这应该是简单的事情,我列出两天。

1 个答案:

答案 0 :(得分:3)

正如Apple doc

中所述
  

可以转换为JSON的对象必须具有以下属性:

     

顶级对象是NSArray或NSDictionary。

     

所有对象都是NSString,NSNumber,NSArray,NSDictionary或NSNull的实例。

     

所有字典键都是NSString的实例。

     

数字不是NaN或无穷大。

因此,您无法使用具有String属性的自定义对象。改为使用对象的字典表示。

更新: 我可以在Objective-C中给你一个例子:

给出一个简单的Person对象:

@interface Person : NSObject
@property (copy, nonatomic) NSString *name;
@property (copy, nonatomic) NSString *surname;
@property (copy, nonatomic) NSString *age;
@end

您可以创建一个获取字典的方法:

-(NSDictionary *) dictionaryRepresentation {
    return @{@"name":self.name,
             @"surname":self.surname,
             @"age":self.age};
}

它可以放在一个类别中或直接放在类中。