这个问题已经被问过很多次了,但是使用相同的代码我让事情变得正常。
我已经使用下面的代码来生成 Json 字典和 Json 字符串。它成功地创建了 json 字符串但不是 json 字典。
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&writeError];
NSString *strJsonRequest = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSDictionary *dicJsonRequest = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&convertError];
NSLog(@"\n dicjson : %@ \n json string : %@ \n error : %@",dicJsonRequest,strJsonRequest,convertError.localizedDescription);
我用来传递数据的这个方法,这需要 NSDictionary
- (void)postPath:(NSString *)path
parameters:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure;
如果我使用此处创建的 JsonString 创建 NSDictionary,那么它将转换为 Web 服务端不接受的不同格式
NSDictionary *WSCALL = [NSDictionary dictionaryWithObjectsAndKeys:strJsonRequest,"Post", nil];
NSLog(@"WSCALL : %@",WSCALL);
输出 :
WSCALL : {
Post = "{\n \"email\" : \"test@test.com\",\n \"password\" : \"test\",\n \"name\" : \"abcd\",\n ";
}
编辑
我在这里可以得出的结论是,webservice 需要创建相同的 json 字符串,但没有这个 "\n" 和 \"email\" (FALSE) -> "email"(TRUE) 但我无法替换 "\n" 因为它当我为字典中的键设置值时正在添加。
有了这个我得到输出
dicjson : {
email = "test@test.com";
name = abcd;
password = test;
}
json string : {
"email" : "test@test.com",
"name" : "abcd",
"password" : "test"
}
error : (null)