Swift 4 json Декодирование с массивом внутри - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть следующие данные Json с веб-страницы

[{"time": "2019-02-04", "lat": 0.0, "lng": 0.0, "base_stations": ["ABCD"], "best_server": "6652", "avg_rssi": -84.67605633802818, "reception_count": 213.0, "link_quality": "GOOD"}, {"time": "2019-02-07", "lat": 90.71, "lng": 100.64, "base_stations": ["CDEF", "XPTO", "ZZEEG"], "best_server": "YYYY", "avg_rssi": -133.0, "reception_count": 3.0, "link_quality": "EXCELLENT"},{....},{....}]

И я бы хотел их декодировать.Я думал что-то вроде этого:

let DamasDriveAddress_Grid = "http://bbbba.fff.com/json_pg"
let url_Grid = URL(string: DamasDriveAddress_Grid)!
let jsonData_Grid = try! Data(contentsOf: url_Grid)

struct Test_Grid: Codable {
    let time: Date
    let lat: Double
    let lng: Double
    let base_stations: [Array]
    let best_server:String
    let avg_rssi:Double
    let reception_count: Double
    let link_quality: String

}

let jsonDecoder_Grid = JSONDecoder()
let Grid = try? jsonDecoder_Grid.decode(Array<Test_Grid>.self,
                                          from: jsonData_Grid)

Но это не работает.

Может кто-нибудь, пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

base_stations должно быть [String]

struct Test_Grid: Codable {
    let time: Date
    let lat: Double
    let lng: Double
    let base_stations: [String] <-- here
    let best_server:String
    let avg_rssi:Double
    let reception_count: Double
    let link_quality: String

}

Также вы должны указать стратегию декодирования даты:

let jsonDecoder_Grid = JSONDecoder()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
jsonDecoder_Grid.dateDecodingStrategy = .formatted(formatter)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...