Я только начал изучать Swift и xcode, и первая проблема, с которой я столкнулся, - как и где мне разместить json файл? И как использовать эти файлы? Следует ли помещать файлы .json в папку Assets? Поскольку мне это сложно, я хотел бы услышать от вас несколько советов или примеров!

12
Jennifer 28 Дек 2015 в 15:10

5 ответов

Лучший ответ

Вы можете добавить empty file, выбрать syntax coloring как JSON и вставить текст в формате json. Даже если он не отформатирован, вы можете отформатировать его, выделив весь текст и нажав Ctrl + I.

enter image description here

17
Denis Kutlubaev 5 Сен 2018 в 17:46

В соответствии с вашим требованием вы хотите читать json из этого файла json.

Для этого я использую SWIFTY JSON Library.

Найдите ссылку для этого

https://github.com/SwiftyJSON/SwiftyJSON

Добавьте эту библиотеку в свой проект.

После добавления просмотрите приведенный ниже код: -

let json = JSON(data: jsonData!)
for (index, subjson): (String, JSON) in json{
    let value = subjson["key"].stringValue
}
0
Sukhdeep Singh Kalra 29 Дек 2015 в 07:24

Как я это сделал в сентябре 2019 года ...

1) В Xcode создайте файл Empty. Дайте файлу суффикс .json

2) Введите или вставьте свой JSON

3) Нажмите Editor -> Syntax Coloring -> JSON

4) Внутри файла выделите JSON, нажмите ctrl + i, чтобы сделать отступ.

5) import SwiftyJSON с использованием Cocoapods

6) В вашем ViewController напишите ...

guard let path = Bundle.main.path(forResource: "File", ofType: "json") else { return }

let url = URL(fileURLWithPath: path)

do {  

    let data = try Data(contentsOf: url)

    let json = try JSON(data: data)

} catch {

    print(error)
}

N.B. - "File" - это имя созданного вами файла, но без суффикса .json

См. Страницу SwiftyJSON GitHub для получения дополнительной информации - https://github.com/SwiftyJSON/SwiftyJSON

6
Henry Noon 30 Сен 2019 в 16:07
var location = "test"
var fileType = "json"
if let path = Bundle.main.path(forResource: location, ofType: fileType) {
        do {
            let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .alwaysMapped)
            let jsonObj = JSON(data: data)
            if jsonObj != JSON.null {
            }
        } catch let error {
            print(error.localizedDescription)
        }}
3
Abhooshan Bhattarai 11 Авг 2017 в 10:58

Просмотрите изображение ниже, чтобы узнать, где разместить файл. Я предлагаю вам создать группу и добавить в нее файл. введите описание изображения  здесь

После этого просмотрите приведенную ниже информацию об использовании этого файла.

Изменить: это обновленный код для Swift 5, если это кому-то поможет.

    let path = Bundle.main.path(forResource: "filename", ofType: "json")
    let jsonData = try? NSData(contentsOfFile: path!, options: NSData.ReadingOptions.mappedIfSafe)
9
Daniel Carns 30 Май 2019 в 16:36