Получение 400 (неверный запрос) при создании httpbody путем передачи словаря - PullRequest
0 голосов
/ 09 марта 2020

Получение 400 (неверный запрос) при создании httpbody путем передачи словаря

 var postData = getJSONData(dict: [["keyword": "", "page":0, "size":10, "sortBy":"id", "status": 0]])
        print(postData)
    func getJSONData(dict:[[String:Any]]) -> Data? {
        var jsonData = "{\r\n"
        for singleDict in dict {
            for (key, value) in singleDict {
                if value is String{
                    jsonData.append(" \"\(key)\": \"\(value)\",\r\n")
                }
                else if value is Int{
                      jsonData.append(" \"\(key)\": \(value),\r\n")
                }

            }
        }

        jsonData.append("}")
        print("convert data ---------")
        print(jsonData)
        print("-------------")
        return jsonData.data(using: .utf8)

    }

, но это работает нормально, когда я использую httpbody напрямую копировать из кода почтальона

let parameters = "{\r\n  \"keyword\": \"\",\r\n  \"page\": 0,\r\n  \"size\": 10,\r\n  \"sortBy\": \"id\",\r\n  \"status\": 0\r\n}"
print(parameters)

Не могли бы вы, пожалуйста скажите, что я делаю неправильно при преобразовании словаря в данные?

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Если вы не можете создать правильное тело запроса с помощью JSONSerialization, просто попробуйте это: -

mainStr = """
          {"key1":"\(value1)","key2":"\(value2)","key3":"\(value3)"}
          """

Все, что вы вставите в тройные кавычки, получит stringify.

PS. - Это не рекомендуется, но вы можете рассматривать это как обходной путь.

0 голосов
/ 09 марта 2020

Вам необходимо использовать JSONSerialization.

func getJSONData(dictionary: [String: Any]) -> Data? {
    do {
        return try JSONSerialization.data(withJSONObject: dicitonary, options: .prettyPrinted)
    } catch {
        return nil
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...