0

我不知道为什么当我使用浮点值时总是带有双引号[String: AnyObject]。你们有什么方法可以让我得到正确的结果吗?

let appliedLoyalty: Float = 1.05
let appliedWallet: Float = 0.55

let payLoad: [String: AnyObject] = ["custid": custid! as AnyObject, "discounts": ["loyalty": appliedLoyalty,"wallet": appliedWallet] as AnyObject] // custid is string value

print(payLoad)

当我打印 payLoad 时,浮点值用双引号括起来。

["discounts": {
    "loyalty" = "1.05";
    "wallet" = "0.45";
}, "custid": "puma"]
4

2 回答 2

3

将 AnyObject 替换为 Any,如下所示:

let appliedLoyalty: Float = 1.05
let appliedWallet: Float = 0.55
let custID = "puma"
let payLoad: [String: Any] = ["custid": custID, "discounts": ["loyalty": appliedLoyalty,"wallet": appliedWallet]] // custid is string value

print(payLoad)

在此处输入图像描述

于 2017-12-20T09:10:32.137 回答
0

当你使用print(payLoad)然后字典的description方法被调用。并且description方法的实现与控制台上打印的相同。而不是打印字典,您应该使用它JSONSerialization来查看实际的 json。使用下面的代码或使用断点来检查里面存储了什么payLoad

let jsonData = try? JSONSerialization.data(withJSONObject: payLoad, options: .prettyPrinted)
let jsonStr = String(data: jsonData!, encoding: .utf8)
print(jsonStr!)
于 2017-12-20T09:09:45.403 回答