如何从对象列表创建 JSON 字符串?
How to create a JSON string from list of objects?
我有一个自定义对象列表。自定义对象中的每个 属性 都是 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
是一个对象列表。这应该很简单,我在上面列出了两天。
如 Apple 所述 doc
An object that may be converted to JSON must have the following properties:
The top level object is an NSArray or NSDictionary.
All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.
All dictionary keys are instances of NSString.
Numbers are not NaN or infinity.
因此您不能使用具有 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};
}
可以放在分类里面,也可以直接放在class里面。
我有一个自定义对象列表。自定义对象中的每个 属性 都是 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
是一个对象列表。这应该很简单,我在上面列出了两天。
如 Apple 所述 doc
An object that may be converted to JSON must have the following properties:
The top level object is an NSArray or NSDictionary.
All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.
All dictionary keys are instances of NSString.
Numbers are not NaN or infinity.
因此您不能使用具有 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};
}
可以放在分类里面,也可以直接放在class里面。