将 NSDictionary 转换为 JSON



如何将NSDictionary转换为JSON?

我已经使用 json 将字典发布到服务器中。并在使用GET方法从服务器接收数据时。无法使用普通的按键调用方法访问数据,例如

_secretanswer.text=[[NSString alloc]initWithFormat:@"%@",[customfield objectForKey:@"secanswer"]];  

服务器返回 NCFString 作为结果。

如何转换和发布 JSON 格式的 NSDictionary?

我相信

你正在寻找的是NSJSONSerialization。

这个答案假设使用NSURLConnection的基于块的API来执行你的GET。

[NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    if (data) {
        NSError *jsonError = nil;
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&jsonError];
        if (dict) {
            // You got a valid NSDictionary out of your JSON response.
            NSLog(@"my returned dictionary: %@", dict);
        } else if (jsonError) {
            // JSON data could not be parsed into NSDictionary. Handle as appropriate for your application.
            return;
        }
    } else if (connectionError) {
        // Handle connection error
    }
}];

但即使你使用的是dataWithContentOfURL:,这一点也是一样的。将您的数据输入到NSJSONSerialization的+ jsonObjectWithData:options:error:方法中,检查您是否从中返回字典,然后继续。

编辑:如果您希望为来自NSDictionary的HTTP请求创建JSON帖子正文,NSJSONSerialization也涵盖了您。

NSError *error = nil;
NSData *data = [NSJSONSerialization dataWithJSONObject:someDictionary options:NSJSONWritingPrettyPrinted error:&error];
if (data) {
    // You got your data.
    NSLog(@"my data: %@", data);
    [someURLRequest setHTTPBody:data];
} else if (error) {
    NSLog(@"error: %@", [error localizedDescription]);
}
NSError * error;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:0 error:&error]; 
NSString * myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]    

最新更新