你说
data2
是let object = try JSONSerialization.jsonObject(with: data!, options:.allowFragments)
在非功能型的价值这种情况下,直接通过JSON
init方法,需要NSArray
/NSDictionary
,即再现而不data:
参数标签:
let json = JSON(data2) // note, if parameter is `Any` (the `NSDictionary`/`NSArray` structure of parsed JSON), then do not include `data:`
顺便说一句,如果你要自己分析它这样,不需要.allowFragments
,例如
let object = try JSONSerialization.jsonObject(with: data!, options: [])
或者,更容易,不叫JSONSerialization
可言,而直接通过的Data
:
parse(data: data!)
而让parse(data:)
呼叫JSON(data:)
,这将对其进行分析你:
func parse(data: Data) {
clearUserInfo()
let json = JSON(data: data) // note, if parameter is `Data`, include `data:`
let userID = json["userID"].stringValue
prefs.setValue(userID, forKey: "userID")
}
以前你说过data2
是
Data
/我从http收到后
在这种情况下,只投它并没有使用.data(using:)
,例如NSData
func parseSJSON(_ data2: AnyObject) {
...
if let data = data2 as? Data {
// use `data` here
}
}
来源
2016-09-18 07:24:11
Rob
'data2'是一个'AnyObject' ,所以它不知道你要调用'.data(using:)'做什么。什么是'data2',真的吗? – Rob
data2是一个json对象 – CK8
'data(using:UInt)'是'NSString'的一个方法,'data(using:String.Encoding)'是'String'的一个方法。所以,如果'data2'不是字符串,你的代码就没有意义了。你的意思是_'data2'是JSON object_的**字符串表示**吗?如果是这样,请将'AnyObject'替换为'String'。 – OOPer