如何映射一个我不知道参数个数的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 或相应的结构。
- 创建一个名为
MyObject
的 class 与您的 json 字典相同
- 创建一个let/var属性
parameters: [String]?
。它是可选的,因为 API 不可靠,可能根本不会发送任何东西。
请参阅下面的示例,我如何解析下面的 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
}
}
现在您可以使用索引访问参数数组。
好吧,这可以重构,您可以了解如何使用该库处理它。
你好我有一个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 或相应的结构。
- 创建一个名为
MyObject
的 class 与您的 json 字典相同 - 创建一个let/var属性
parameters: [String]?
。它是可选的,因为 API 不可靠,可能根本不会发送任何东西。 请参阅下面的示例,我如何解析下面的 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 } }
现在您可以使用索引访问参数数组。
好吧,这可以重构,您可以了解如何使用该库处理它。