Nie mam pojęcia, dlaczego wartość zmiennoprzecinkowa zawsze zawiera podwójne cudzysłowy, gdy używałem [String: AnyObject]
. Czy macie jakieś metody, aby uzyskać prawidłowy wynik?
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)
Kiedy drukuję payLoad, wartość zmiennoprzecinkowa pojawia się w podwójnych cudzysłowach.
["discounts": {
"loyalty" = "1.05";
"wallet" = "0.45";
}, "custid": "puma"]
Odpowiedzi:
3 dla odpowiedzi № 1Zamień AnyObject na Any jak poniżej:
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)
0 dla odpowiedzi nr 2
Kiedy używasz print(payLoad)
następnie słownik description
wywoływana jest metoda I wdrożenie description
Metoda robi to samo co wydrukowana na konsoli. Zamiast wydrukować słownik, powinieneś użyć JSONSerialization
aby zobaczyć faktyczny Json. Użyj poniższego kodu lub punktów przerwania, aby sprawdzić, co jest przechowywane w środku payLoad
let jsonData = try? JSONSerialization.data(withJSONObject: payLoad, options: .prettyPrinted)
let jsonStr = String(data: jsonData!, encoding: .utf8)
print(jsonStr!)