ASIHTTPRequest упаковка JSON в кавычки - PullRequest
0 голосов
/ 27 июня 2011

Я использую ASIHTTPRequest и json-framework для публикации JSON в приложении rails,

Проблема в том, что когда JSON приходит на сервер, он заключается в двойные кавычки,

Вот код, который я использую для кодирования и отправки JSON:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/shared_lists.json",kAPIRoot]]];

    NSString *dataString = [NSString stringWithFormat:@"shared_items=%@&shared_list=%@&facebook_id=%@",[sharedItems JSONRepresentation],[sharedList JSONRepresentation],facebookID];

    NSLog(@"%@",[NSString stringWithUTF8String:[[dataString dataUsingEncoding:NSUTF8StringEncoding] bytes]]);

    [request appendPostData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];
    [request setRequestMethod:@"POST"];
    [request setDelegate:self];

    [request setDidFinishSelector:@selector(requestDone:)];
    [request setDidFailSelector:@selector(requestWentWrong:)];

    [queue addOperation:request];

, который правильно регистрируется как:

shared_items=[{"entity_id":"531","position":"1"},{"entity_id":"733","position":"2"},{"entity_id":"723","position":"3"},{"entity_id":"2530","position":"4"}]&shared_list={"list_id":1197}&facebook_id=-1540981104

Хотя, когда он приходит на сервер, он выводит как:

shared_items="[{"entity_id":"531","position":"1"},{"entity_id":"733","position":"2"},{"entity_id":"723","position":"3"},{"entity_id":"2530","position":"4"}]",shared_list="{"list_id":1197}",facebook_id="-1540981104"

Как мне остановить массивы, упакованные в одну строку?

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

Попробуйте так:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/shared_lists.json",kAPIRoot]]];

NSString *dataString = [NSString stringWithFormat:@"shared_items=%@&shared_list=%@&facebook_id=%@",[sharedItems JSONRepresentation],[sharedList JSONRepresentation],facebookID];

NSMutableData *requestBody = [[NSMutableData alloc] initWithData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];
[request setRequestMethod:@"POST"];
[request setPostBody:requestBody];
[request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];

[request setUseSessionPersistence:NO];
[request setUseCookiePersistence:NO];
[request setCacheStoragePolicy:ASICacheForSessionDurationCacheStoragePolicy];
0 голосов
/ 27 июня 2011

Я решил проблему, вручную создав строку JSON:

NSString *dataString = [NSString stringWithFormat:@"{\"shared_items\":%@,\"shared_list\":%@,\"facebook_id\":%@}",[sharedItems JSONRepresentation],[sharedList JSONRepresentation],facebookID];
...