【发布时间】:2021-04-29 15:44:50
【问题描述】:
我从服务器收到一些按嵌套字典顺序排列的 JSON 响应。我得到的响应是这样的:
data = {
"cart_count" = "5.8";
"del_fee_popup" = 1;
"delievery_fee" = 26;
"delievery_fee_message" = "Free delivery on order more than 500 tk.";
"delievery_fee_types" = (
{
"delievery_fee" = 26;
"delievery_fee_type" = 1;
"from_time" = 7;
"from_time_str" = "7 AM";
message = "Estimated delivery time 1.5~4hrs after accepted the order";
title = "Regular Delivery";
"to_time" = 22;
"to_time_str" = "10 PM";
},
{
"delievery_fee" = 80;
"delievery_fee_type" = 2;
"from_time" = 10;
"from_time_str" = "10 AM";
message = "Estimated delivery time 1~1.5hr after accept the order";
title = "Urgent Delivery";
"to_time" = 0;
"to_time_str" = "12 AM";
}
);
discount = 0;
total = "31.8";
我可以像这样从响应中映射“数据”:
mutating func deserilize(values: Dictionary<String, Any>?) {
Data = (data as! [String : Any])
deliveryFee = Data!["delievery_fee"] as! Double
total = Data!["total"] as! Double
discount = Data!["discount"] as! Double
cartCount = Data!["cart_count"] as! Double
del_fee_popup = Data!["del_fee_popup"] as! Bool
}
我需要一些建议来映射 JSON 响应中的“delievery_fee_types”。
【问题讨论】:
-
你为什么不使用
Codable(如果你有Swift4+)?它更容易。但是delievery_fee_types是[[String: Any]],一个字典数组,因为这是您最初的问题。 -
首先,我建议你使用
lowerCamelCasing作为变量名。其次,我也建议您阅读Codable以简化您的工作流程。如果您坚持按照自己的方式行事,那么您的delievery_fee_types将是[[String : Any]]类型。