无法使用 NSJSON 序列化将数字转换为 JSON 值
Can't use NSJSONSerialization to convert number to JSON value
我需要 POST 一个 JSON 数值到服务器,通过使用 AFNetworking,我是这样做的:
let url:Int = "my_url_here"
let param = myNumber
let task = self.sessionManager.POST(url, param, success:mySuccessBlock, failure:myFailureBlock)
出现异常:
'NSInvalidArgumentException', reason: '*** +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'
设置异常断点后,代码停在[mutableRequest setHTTPBody...]
:
#pragma mark - AFURLRequestSerialization
- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
withParameters:(id)parameters
error:(NSError *__autoreleasing *)error
{
......
**[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];**
......
}
所以[NSJSONSerialization dataWithJSONObject:options:error:]
不能用来把Int/NSNumber转换成JSON?我该怎么办?
最小有效 JSON 是 {}
或 []
。您需要将数字包装在对象或数组中。
尝试 let param = [myNumber]
或 let param = ["number" : myNumber]
,例如。
您可以使用 JSONLint 之类的工具来验证您的 JSON。
我需要 POST 一个 JSON 数值到服务器,通过使用 AFNetworking,我是这样做的:
let url:Int = "my_url_here"
let param = myNumber
let task = self.sessionManager.POST(url, param, success:mySuccessBlock, failure:myFailureBlock)
出现异常:
'NSInvalidArgumentException', reason: '*** +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'
设置异常断点后,代码停在[mutableRequest setHTTPBody...]
:
#pragma mark - AFURLRequestSerialization
- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
withParameters:(id)parameters
error:(NSError *__autoreleasing *)error
{
......
**[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];**
......
}
所以[NSJSONSerialization dataWithJSONObject:options:error:]
不能用来把Int/NSNumber转换成JSON?我该怎么办?
最小有效 JSON 是 {}
或 []
。您需要将数字包装在对象或数组中。
尝试 let param = [myNumber]
或 let param = ["number" : myNumber]
,例如。
您可以使用 JSONLint 之类的工具来验证您的 JSON。