Как сохранить данные JSON на моем локальном хосте? в ответе на http — сообщение указано «200».

#swift #alamofire #alamofire-request #alamofire-upload

Вопрос:

     let parameters = ["lat": latitude, "lng": longitude]
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.addValue("application/json", forHTTPHeaderField: "Content-type")
    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
    request.httpBody = httpBody
    
    let session = URLSession.shared
    session.dataTask(with: request) { (data, response, error) in
        
        
        if let response = response {
            print(response)
        }
        if let httpResponse = response as? HTTPURLResponse {
            print(httpResponse.statusCode)
        }
        
        if let data = data {
            do {
                let jsonDecoder = JSONDecoder()
                
                var parsedJSON = try jsonDecoder.decode([UserCoords].self, from: data)
                parsedJSON.append(Vac_Pass.UserCoords(lat: latitude, lng: longitude))
                let wer = try? JSONEncoder().encode(parsedJSON)
                let json = try JSONSerialization.jsonObject(with: wer!, options: [])
                print(json)
                
                
                print(json)
            } catch {
                print(error)
            }
        }
    }.resume()
 

Поскольку в ответе http post указано «200», это указывает на то, что запрос выполнен успешно, но не удалось загрузить новые данные. Если бы данные были загружены, они бы напечатали «201». Я думаю, что с моим веб-сервером localhost может быть что-то не так.

Локальный хост, по сути, представляет собой файл JSON, который содержит такие координаты:

      [
      {"lat" : 38.8976, "lng" : -77.0369 } ,
      {"lat" : 38.8980, "lng" : -77.0363 } ,
      {"lat" : 38.8990, "lng" : -77.0367 } 
     ]
 

Спасибо — все вклады приветствуются :).

Комментарии:

1. Декодируйте JSON в объект. Затем добавьте новое содержимое в объект. Затем закодируйте объект обратно в JSON. // На каждом из этих шагов уже есть много примеров на сайте, пожалуйста, проведите некоторое исследование, легко найти решение. Ключ в том, чтобы разбить вашу цель на более мелкие подзадачи.

2. Спасибо за помощь, но я все еще не понимаю, как на самом деле заменить данные в моем файле localhost моими новыми данными JSON. Я закодировал обратно в JSON следующим образом: let wer = попробуйте JSONEncoder().encode(parsedJSON) let json = Строка(данные: wer, кодировка: .utf8)

3. Первый вопрос: почему вы преобразуете свой объект JSON в строку с let json = String(data: wer, encoding: .utf8) помощью ? Вам никогда не нужно этого делать, за исключением, возможно, печати во время отладки. Ваши данные JSON wer , они у вас есть, не нуждаются в дальнейших преобразованиях. Тогда, если ты хочешь сохранить его… просто сделай это. Сохраните его в локальном файле. Много учебных пособий о том, как это сделать.

4. Я ценю вашу помощь и приношу извинения за то, что задаю так много вопросов. Я обновил свой вопрос своим новым кодом, чтобы посмотреть на него. В принципе, он распечатывает новый файл JSON, но запрос post, похоже, не работает. Там написано «200», а не «201», поэтому данные не загружаются.