Ошибка синтаксического анализа JSON: ошибка brautaset.JSON - PullRequest
0 голосов
/ 21 декабря 2011

Я делаю запрос к серверу о некоторых результатах, которые должны быть возвращены в формате 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]);
    }

Ответы [ 2 ]

0 голосов
/ 21 декабря 2011

Создать дату в этом формате.

   NSStime *time = [NSString stringWithFormat:@"/Date(%@)/", [NSNumber numberWithLongLong:[[NSDate date] timeIntervalSince1970] * 1000]];
0 голосов
/ 21 декабря 2011

Не используйте NSString для создания тела запроса JSON.Use [NSDictionary dictionaryWithObjects: objects forKeys: keys];а затем просто выполните [dictionaryinput JSONRepresentation];Это создаст строку JSON для вас.Это лучший способ сериализации и десериализации объекта JSON и избавит вас от множества хлопот.

...