【发布时间】:2013-08-12 05:16:53
【问题描述】:
这个问题已经被问过很多次了,但使用相同的代码我得到了工作。
我使用下面的代码来生成 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)
【问题讨论】:
-
问题出在哪里?你得到一个字典,一个字符串,并且没有错误。我不明白你想要达到什么目的。
-
我的问题是我没有得到 json 格式的字典。即使我可以将字符串转换为 json,但我需要 json 字典
-
我正在使用 ASIHTTP,它需要 NSDictionary 作为请求参数,在 web 服务中我需要传递在 json 字符串中创建的结构。我已将 json 字符串直接检查到 REST,然后它正在工作,但代码中的数据类型不起作用
-
不能像用“:”代替“=”吗?
-
如果你这样做会发生什么...
NSLog(@"%@", dicJsonRequest[@"email"]);?
标签: iphone objective-c json nsjsonserialization