Почему мой загруженный файл JSON больше не является JSON? - PullRequest
0 голосов
/ 02 декабря 2018

Я загружаю файл JSON, который я проверил, чтобы он был действительным JSON с "https://jsonlint.com"" в каталог документов. Затем я открываю файл и проверяю его снова, и он выходит как недопустимый JSON.что возможно ???? вот код:

let destination: DownloadRequest.DownloadFileDestination = { _, _ in
        var documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

        documentsURL.appendPathComponent("analysis."+pathExtension)
        return (documentsURL, [.removePreviousFile])
    }

Alamofire.download("http://www...../analysis.json", to: destination).response { response in
        if response.destinationURL != nil {
            print(response.destinationURL!)

            let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
            let documentsDirectory = paths[0]

            let path = documentsDirectory + "/analysis.json"

            if JSONSerialization.isValidJSONObject(path) {
                 print("Valid Json")
            } else {
            print("InValid Json")     ///// I am getting here "INValid Json" - how is that possible????
            }
        }
    }

1 Ответ

0 голосов
/ 02 декабря 2018

Поскольку path - это строка, указывающая местоположение файла в вашей системе, что-то вроде file://path/to/analysis.json.Это, очевидно, недопустимый JSON.

Что вы хотите проверить, так это content того файла, который является допустимым JSON.Попробуйте это:

Alamofire.download("http://www...../analysis.json", to: destination).response { response in
    guard detinationURL = response.destinationURL else { return }
    guard data = Data(contentsOf: destinationURL) else { return }

    do {
        let jsonObject = try JSONSerialization.jsonObject(with: data, options: [])
    } catch {
        print("InValid Json")
    }
}

На заметку: почему бы не использовать Decodable?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...