Objective-C/iOS:将对象数组转换为JSON字符串

ros*_*400 5 iphone json objective-c ipad ios

我目前正在尝试使用JSON进行互联网数据传输.我已成功接收JSON字符串并将其转换为NSDictionary,但尚未能够解决如何将对象的数组或字典转换为JSON表示.

我已经阅读了许多帖子和文章,解释了如何创建一个NSDictionary键/值对,然后转换为JSON,它适用于一个简单的数组,但是当你有一个数组或对象字典时,你如何实现这一点.

例如,我有一个对象数组"contact",然后我想将其转换为JSON字符串:

"contacts":{
    "contact":[
    {
        "id":"1"
        "first_name":"john",
        "last_name":"citizen",
        "phone":"9999 9999"
    }
    {
        "id":"1"
        "first_name":"jane",
        "last_name":"doe",
        "phone":"8888 8888"
    }
    ]
 }
Run Code Online (Sandbox Code Playgroud)

我有一个NSMutableDictionary填充联系对象列表:

    NSMutableDictionary* contactsToBeSynced = [[NSMutableDictionary alloc] init];
    //Populate dictionary with contact objects.
    contactsToBeSynced = self.getNonSynchronisedData;
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用该NSJSONSerialization方法转换对象字典,但它失败并出现错误.

    NSError* error;
    NSString* jsonString;
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:contactsToBeSynced options:NSJSONWritingPrettyPrinted error:&error];
    jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

有没有人能成功做到这一点?非常感谢一些帮助或正确方向的一点.干杯.

Kyr*_*off 5

关于您的结构 - 您contactsToBeSynced必须是NSDictionary班级,并且contact应该是NSArray包含NSDictionary不同联系人的对象.顺便问一下,你试过JSONKit吗?它的序列化比标准更好NSJSONSerialization.