JSON-каркас sbrautaset Objective-C: получить значение null для objectWithString - PullRequest
0 голосов
/ 02 июля 2010

У меня есть некоторый код Python для Google App Engine, который отвечает строкой {"sample_list": [{"message": "Hello, world.", "name": "Human"}]} Я использую эту JSON-инфраструктуру, разработанную sbrautaset для преобразования строки в объект, который я могу использовать (NSDictionary inэтот случай).Я следую учебнику здесь , чтобы использовать фреймворк.

Моя проблема в том, что я получаю нулевое значение для [jsonParser objectWithString:jsonString error:NULL], где jsonString {"sample_list": [{"message": "Hello, world.", "name": "Human"}]}, а jsonParser является экземпляром SBJSON из фреймворка.

Я предполагаю, что синтаксический анализатор не распознает строку как формат JSON.Любое понимание будет оценено, поскольку я совершенно новичок в JSON.

Спасибо!

ОБНОВЛЕНИЕ: Код Python на стороне сервера

outer_dict = {}
middle_list = []
inner_dict = {}
inner_dict["name"] = "Human"
inner_dict["message"] = "Hello, world."
middle_list.append(inner_dict)
outer_dict["sample_list"] = middle_list
json_message = simplejson.dumps(outer_dict)
self.response.out.write(json_message)

Код Objective-C на стороне клиента

NSURL *url = [NSURL URLWithString:@"http://theurl"];
NSString *jsonString = [self stringWithUrl:url];
NSLog(@"%@", jsonString);
id myObj = [jsonString JSONValue];
NSLog(@"%@", myObj);

stringWithUrl

- (NSString *) stringWithUrl:(NSURL *)url {
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                            cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                        timeoutInterval:30];
NSData *urlData;
NSURLResponse *response;
NSError *error; 

urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

    return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
}

1 Ответ

1 голос
/ 02 июля 2010

{"sample_list": ["message": "Hello, world.", "Name": "Human"]}

Вы должны использовать кодировщик JSON на стороне сервера для кодирования объектов в JSONстроки.Таким образом, вы по ошибке не будете создавать неверные строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...