Я пытаюсь научиться анализировать JSON.Я написал API в Laravel, который возвращает status : 200
в ответ.Я сделал следующее:
guard let url = URL(string: "http://localhost/workon-api/public/api/register") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let newUser = User.init(name: "Rob", email: "abc@gmail.com", password: "12345678")
do {
let jsonBody = try JSONEncoder().encode(newUser)
request.httpBody = jsonBody
} catch { }
URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else { return }
do {
let json = try JSONSerialization.data(withJSONObject: data, options: .prettyPrinted)
print(json)
} catch {}
}.resume()
Теперь я получаю эту ошибку: Invalid top-level type in JSON write
и сбой приложения.После поиска я использовал это:
let json = try JSONSerialization.jsonObject(with: data, options: [])
И это работает.Почему предыдущий метод не работает?И я получаю ответ, как это, если я пытаюсь вернуть собранный userInfo.
status = "{\"name\":\"Rob\",\"email\":\"abc@gmail.com\",\"password\":\"12345678\"}";
Почему там обратная косая черта?Это нормально?И что такое данные Gzip?Я знаю, что спрашиваю много, но мне нужно это понять.Заранее спасибо.
PS: Вот модель пользователя.
struct User: Encodable {
let name : String?
let email : String?
let password : String?
}