如何制作嵌套字典,IOS - Objective C

How to make a nested dictionary , IOS - Objective C

我正在开发一个与服务器通信的 iOS 应用程序。谁能帮我建一个这样的字典。

{
    "api_key": "APIKey",
    "items": [{
        "item_id": "10",
                   "quantity": "10"
    }, {
        "item_id": "11",
                   "quantity": "10"
    }],
    "user_id": "UserID",
    "user_address": "address",
    "user_number": "number"

}

这是我创建 JSON 的代码,它会产生无效的 json

NSMutableArray *arrayItems = [NSMutableArray new];
for (int i=0; i<[ordeArray count]; i++) {
    ItemBO *item = [ordeArray objectAtIndex:i];
    NSString *quantity = [NSString stringWithFormat:@"%i",item.quantity];
    NSDictionary *dic = @{@"quantity": quantity, @"item_id":item.itemID };
    [arrayItems addObject: dic];
}
NSString * userID = [[NSUserDefaults standardUserDefaults] valueForKey:USERID];
NSDictionary *mainDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:

                    APIKEY, @"api_key",
                          orderinfo.deliveryAddress , @"delivery_address",
                          orderinfo.deliveryTime , @"delivery_time",
                          orderinfo.contactNumber , @"delivery_contact",
                          arrayItems , @"items",
                          userID , @"user_id",
                          nil];
return mainDictionary;
NSDictionary *dic = @{
    @"api_key": @"APIKey",
    @"items": @[@{
        @"item_id": @"10",
        @"quantity": @"10"
    }, @{
        @"item_id": @"11",
        @"quantity": @"10"
    }],
    @"user_id": @"UserID",
    @"user_address": @"address",
    @"user_number": @"number"
}

您可以通过设置键值对来创建字典,这是字典的简单机制。

你的情况:

您必须为具有项目字典对象的项目采用一个数组,例如:

NSDictionary *dic = @{
        "item_id": "10",
                   "quantity": "10"
    };

在 NSMutableArray 中添加这些类型的对象,例如:

NSMutableArray *arrayItems = [NSMutableArray new];
[arrayItems addObject: dic];

通过这种方式,你可以在这个数组中添加多个字典,完成后你可以使用另一个包含所有键值对的字典,如:

NSMutableDictionary *dicMain = [NSMutableDictionary new];
[dicMain setValue:"APIKey" forKey:"api_key"];
[dicMain setObject:arrayItems forKey:"items"]; // add items array in dictionary

等等设置所有的键值对就完成了。

使用这个

将这个字典转换成JSON数据
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[NSDictionary dictionaryWithDictionary:dict] options:0 error:nil];

并将此数据设置为请求 body.like this

[request setHTTPMethod:@"POST"];
[request setHTTPBody:objData];

希望这对您有所帮助。 :)