Как сопоставить json, что я не знаю количество параметров

Здравствуйте, у меня есть json, который возвращает мне некоторые параметры в виде переменных. У него есть Parameter1, Parameter2, Parameter3 и т. д. Я не знаю, сколько параметров он мне даст. Это не список, это просто разные переменные в json.

Каков наилучший способ отобразить такой json? Я использую картограф объектов

Например:

Первый раз json

 {
  "MyObject": {
    "Parameter1": "p1",
    "Parameter2": "p2",
    "Parameter3": "p3",
    "Parameter4": "p4"
  }
}

И второй раз json

{
  "MyObject": {
    "Parameter1": "p1",
    "Parameter2": "p2",
    "Parameter3": "p3"
  }
}

person Βασίλης Δ.    schedule 10.04.2018    source источник
comment
Можете ли вы поделиться образцом JSON?   -  person Abhirajsinh Thakore    schedule 10.04.2018
comment
Я отредактировал это, проверьте, спасибо @AbhirajsinhThakore   -  person Βασίλης Δ.    schedule 10.04.2018
comment
Как ваше приложение узнает, к каким свойствам обращаться? Это фиксированный список известных имен?   -  person Gereon    schedule 10.04.2018
comment
Я не знаю, я попытаюсь отобразить фиксированное количество свойств, например, первые пять Параметр1, Параметр 2... и Если их больше, их проблема. Но я хочу знать, есть ли способ сопоставить эти свойства с помощью чего-то вроде map[Parameter*]   -  person Βασίλης Δ.    schedule 10.04.2018
comment
Ну, вы можете преобразовать json в словарь и перебрать ключ и значения   -  person J. Doe    schedule 10.04.2018
comment
Идеальный ответ, который я искал, опубликуйте его как ответ, чтобы отметить его как решенный. Дж. Доу   -  person Βασίλης Δ.    schedule 10.04.2018


Ответы (2)


Вы можете попробовать это.

let keyvalue = parentDict.value(forKey: "MyObject") as! NSDictionary
                var lastValue = Keyvalue.allValues
                var lastKey = Keyvalue.allKeys

                for Keyname in Keyvalue.allKeys
                {
                    print("Keyname %@",Keyname)
                    print("Value %@",Keyvalue.value(forKey:Keyname))
                }
person kalpesh    schedule 10.04.2018

первый шаг к анализу любого JSON, чтобы сделать его пригодным для повторного использования, — это создать класс или структуру модели соответственно.

  1. Создайте класс с именем MyObject так же, как ваш словарь json.
  2. Создайте свойство let/var parameters: [String]?. Это необязательно, поскольку API ненадежен и, возможно, вообще ничего не отправит.
  3. Посмотрите пример ниже, как я анализирую объект json ниже.

    class MyObject {
       let parameters: [String]?
    
       // it's failable because maybe json different at runtime & couldn't parse
       init?(json: [String:AnyObject]) {
          var key = "Parameter"
          var parms = [String]()
          for i in 0..<json.count {
             guard let item = json["\(key)\(i+1)"] as? String else { continue }
             params.append(item)
          }
          self.parameters = params
       }
    
    }
    

Теперь вы можете получить доступ к массиву параметров с помощью index.

Ну, это можно было бы реорганизовать, и вы можете понять, как вы справитесь с этой библиотекой.

person Amber K    schedule 10.04.2018