Json Data转换为Json字符串,但不转换为Json Dictionary

时间:2013-08-12 05:16:53

标签: iphone objective-c json nsjsonserialization

这个问题已经被问了很多次,但是使用相同的代码我会让事情发生。

我使用下面的代码生成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)

1 个答案:

答案 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;
} 

所以你手边有一本有效的字典。只需要剩下的编码