如何映射一个我不知道参数个数的json

How to map a json that I don't know the number of the parameters

你好我有一个json returns 我有一些参数作为变量。 它有Parameter1、Parameter2、Parameter3等。 我不知道它会给我多少参数。它不是一个列表,它只是 json 中的不同变量。

哪个是映射 json 那样的最佳方式?我使用对象映射器

例如:

第一次 json 是

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

第二次 json 是

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

你可以试试这个。

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))
                }

解析任何 JSON 以使其可重用的第一步是创建您的模型 class 或相应的结构。

  1. 创建一个名为 MyObject 的 class 与您的 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
       }
    
    }
    

现在您可以使用索引访问参数数组。

好吧,这可以重构,您可以了解如何使用该库处理它。