Swift parse json с последовательным кодированием - PullRequest
0 голосов
/ 04 мая 2020

У меня есть json вроде:

{
  alt_ozellik: {
  id: "2",
  ilan_id: "2",
  yilMin: "",
  yilMax: "",
  kilometre: "",
  vites: "",
  yakit: "Dizel",
  kasatipi: "Hatchback",
  renk: ""
   }
}

, и это моя кодируемая структура:

struct OtomobilDetay : Decodable{

let alt_ozellik : [String:String]


}

, и я получаю элементы с этими блоками кода в задаче URLSession:

     do{

        let detayJson = try JSONDecoder().decode(OtomobilDetay.self, from: data)
         print(detayJson.alt_ozellik)

      }catch{
          print("catch")
           print(error)
       }

Как видите, json ключи, такие как "id, ilan_id ...", должны последовательно указываться. Но print(detayJson.alt_ozellik) этот отпечаток каждый раз отображается по-разному при выполнении задачи

Это это вывод первого запуска:

["ilan_id": "1", "yakit": "", "yilMax": "2011", "kilometre": "", "renk": "", "id": "1", "yilMin": "2010", "vites": "Manuel", "kasatipi": ""]

Это вывод второго запуска:

["vites": "Manuel", "id": "1", "kilometre": "", "kasatipi": "", "ilan_id": "1", "renk": "", "yakit": "", "yilMin": "2010", "yilMax": "2011"]

И каждый раз, когда я запускаю это, порядок меняется, но я хочу получить все это как мой json выше.

Ожидаемый результат:

["id": "1", "ilan_id": "1", "yilMin": "2010", "yilMax": "2011", "kilometre": "","vites": "Manuel" ,"yakit": "","kasatipi": "", "renk": "" ]

Я знаю, когда я изменю свой Codable, например

struct OtomobilDetay : Decodable{

let alt_ozellik : otomobilAltOzellik  

}
struct otomobilAltOzellik : Decodable{
    let id : String
    let ilan_id : String
    let yilMin : String
    let yilMax : String
    let kilometre : String
    let vites : String
    let yakit : String
    let kasatipi : String
    let renk : String
}

вернет то, что я ожидал, но alt_ozellik свойства меняются на стороне сервера, поэтому мне нужно получить все с [String:String] массивом

Итак, как я могу получить json последовательно. Я исследовал, но не могу найти решение.

...