我正在向服务器发出一个请求,要求以JSON
的格式返回一些结果。JSON解析错误获取brautaset.JSON错误
当我打印出请求的字符串时,它显示正确的输出。然而,当我尝试分析结果字符串我得到的错误:
Error Domain=org.brautaset.JSON.ErrorDomain Code=3 "Object value expected for key: result" UserInfo=0x6c4cbe0 {NSUnderlyingError=0x6c4caf0 "Object value expected for key: map", NSLocalizedDescription=Object value expected for key: result}
这是我的JSON的代码:
SBJSON *jsonParser = [[SBJSON alloc] init];
[jsonParser setHumanReadable:YES];
NSError *theError;
NSString *loginPayload = @"{\"service\": \"getMyJobs\", \"params\": {\"map\": {\"day\": {\"javaClass\": \"java.sql.Timestamp\", \"time\": 1316757600000}}}, \"security\": {\"map\": {}}, \"userInfo\": false}";
NSURL * url = [NSURL URLWithString:kURLForAPI];
NSMutableURLRequest * req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[loginPayload dataUsingEncoding:NSUTF8StringEncoding]];
[req setHTTPShouldHandleCookies:YES];
[req setValue:@"text/xml charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[req setValue:cookie forHTTPHeaderField:@"Cookie"];
NSHTTPURLResponse * response = nil;
NSData * dataResult = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&theError];
NSMutableDictionary *dicts;
if (dataResult) {
NSString *resultString = [[NSString alloc] initWithData:dataResult encoding:NSUTF8StringEncoding];
//NSLog(@"login response: %@",resultString);
//NSLog(@"response %@", [response allHeaderFields]);
dicts = [jsonParser objectWithString:resultString error:&theError];
//dicts = [resultString JSONValue];
if(theError)
{
NSLog(@"Result %@",[theError description]);
}
如果可能,向我们展示您的'resultString';这将使分析更容易。从错误中看来,您可能在提交的空白“地图”属性中遇到问题。 – jstevenco 2011-12-20 21:08:55
我用jsonlint来验证JSON,它给了我一个日期格式的错误。下面是结果字符串: { “taskDate”:newDate( “2011年9月23日00:00:00”), “roleTypeId”: “技术人员”} 我在taskDate价值 – bakwarte 2011-12-21 00:37:43
得到一个错误看起来不像一个有效的表示日期的格式,至少就SBJSON而言。我期望看到日期为字符串文字,您可以使用'NSDate'和'NSDateFormatter'按照您的需要进行按摩,或者作为'time_t'整数。至少这些是我用Stig框架处理日期的方法。所以就你所拥有的而言,省略了包含字符串文字的'newDate()',你应该很好。 – jstevenco 2011-12-21 01:51:00