Быстрая JSONSerialization как Int вместо Double - PullRequest
0 голосов
/ 06 октября 2019

У меня есть запрос, который неявно преобразуется в Int из Double. Мне нужен формат моих параметров без изменений. Например, ниже, я отправляю сумму 300.0, когда я распечатываю запрос, который отправляется как Int 300 вместо двойного.

        let params = [
            "id": "xxx",
            "amount": 300.0
            ] as [String : Any]
        let jsonData = try? JSONSerialization.data(withJSONObject: params)

        let url = URL(string: "BASE_URL")
        var request = URLRequest(url: url!)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.httpMethod = "POST"
        request.httpBody = jsonData

Когда я распечатываю запрос, это то, что я получаю:

 {"id":"xxx", "amount":300} 

Instead of {"id":"xxx", "amount":300.0}

1 Ответ

1 голос
/ 06 октября 2019

Это не так, как работает JSON. JSON не проводит никаких внутренних различий между числовыми типами. Таким образом, JSON, который вы видите, является эквивалентом данных, которые вы помещаете в него, потому что нет различий между 300 и 300.0. (Если бы вы ввели 300.1, конечно, вы бы увидели что-то более похожее на 300.1.)

Если клиент хочет трактовать ваш номер как двойной, то естьдо клиента. Но вы не можете вставить Double. Все, что вы можете вставить, это число.

...