这个问题已经被问了很多次,但是使用相同的代码我会让事情发生。
我使用下面的代码生成Json Dictionary和Json string。它成功创建了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,那么它将转换为不在webservice端接受的不同格式
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) - > “电子邮件”(TRUE) 但我无法替换“\ n”,因为它是在我为字典中的键设置值时添加的。
有了这个,我得到输出
dicjson : {
email = "test@test.com";
name = abcd;
password = test;
}
json string : {
"email" : "test@test.com",
"name" : "abcd",
"password" : "test"
}
error : (null)
答案 0 :(得分:0)
没有错误你正在做什么并且日志显示你正在获得一个NSDictionary,如果你试图登录NSDictionary,很明显你会得到一个json字符串响应。参见这一行
NSLog(@"\n dicjson : %@ \n json string : %@ \n error : %@",dicJsonRequest,strJsonRequest,convertError.localizedDescription);
此处NDDictionary包含正确的值,因为日志显示
dicjson : {
email = "test@test.com";
name = abcd;
password = test;
}
所以你手边有一本有效的字典。只需要剩下的编码