如何制作嵌套字典,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];
希望这对您有所帮助。 :)
我正在开发一个与服务器通信的 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];
希望这对您有所帮助。 :)