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

时间:2018-04-10 06:34:40

标签: ios json swift object mapper

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

这是映射json的最佳方式吗?我使用Object Mapper

例如:

第一次json是

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

json第二次

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

2 个答案:

答案 0 :(得分:1)

你可以试试这个。

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

答案 1 :(得分:0)

解析任何JSON以使其可重用的第一步是相应地创建Model类或结构。

  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
       }
    
    }
    
  4. 现在您可以使用索引访问参数数组。

    这可以重构,您可以了解如何使用该库处理此问题。