我必须准备字典以进行序列化,然后将其发布到服务器。字典可能有几个其他字典作为@“items”键的值。但有些括号中断。服务器响应我的错误。
NSMutableArray *a = [[NSMutableArray alloc]init];
for(int i = 0; i < [self.cartCopy count]; i++) {
NSString *itemNumber = [NSString stringWithFormat:@"%d", i + 1];
NSDictionary *tempDict = @{ itemNumber : @{
@"item_id" : [[self.cartCopy objectAtIndex:i]objectForKey:@"id"],
@"quantity" : [[self.cartCopy objectAtIndex:i]objectForKey:@"quantity"],
@"type" : [[self.cartCopy objectAtIndex:i]objectForKey:@"type"],
@"color_id" : @"0",
}
};
[a addObject:tempDict];
}
NSDictionary *dict = @{
@"date":oDate,
@"address":oAddress,
@"name":oName,
@"shipping_date":oShippingDate,
@"receiver_phone":oReceiverPhone,
@"customer_phone":oCustomerPhone,
@"total_price": oTotalPrice ,
@"additional_info": @"asd",
@"items": a
};
更新:我的NSLog of string [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil]:
{"address":"asd",
"name":"asd",
"receiver_phone":"123",
"customer_phone":"123",
"total_price":"1",
"date":"2013-03-05 21:22:55",
"additional_info":"asd",
"items":[
{"1":{
"type":"2",
"color_id":"0",
"item_id":10,
"quantity":"3"
}
},
{"2":{
"type":"1",
"color_id":"0",
"item_id":74,
"quantity":"3"
}
}
],
"shipping_date":"2030-03-03 12:12:12"
}
我认为原因是方括号。我该如何删除它们?
例如,它与字典完美配合:
NSDictionary *dict = @{
@"date":oDate,
@"address":oAddress,
@"name":oName,
@"shipping_date":oShippingDate,
@"receiver_phone":oReceiverPhone,
@"customer_phone":oCustomerPhone,
@"total_price": oTotalPrice ,
@"additional_info": @"asd",
@"items": @{
@"1":@{
@"type":@"1",
@"color_id":@"0",
@"item_id":@"1",
@"quantity":@"1"
},
@"2":@{
@"type":@"1",
@"color_id":@"0",
@"item_id":@"1",
@"quantity":@"1"
}
}
};
答案 0 :(得分:0)
看起来好像要将JSON发送到服务器。您可以使用
从字典中创建JSON数据NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
如果您需要它作为字符串:
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
答案 1 :(得分:0)
在完美运行的示例中,items对象是一个带有键{1,2}的字典。
在输出JSON中,您的items对象是一个数组。
这个数组包含2个对象,每个对象都是一个字典。
第一个包含单个键{1}。 第二个包含一个密钥{2}。
您只需要删除数组并使用字典来存储这些词典。