将 SwiftyJSON 用于 Swift 3.1 的子数组

Posted

技术标签:

【中文标题】将 SwiftyJSON 用于 Swift 3.1 的子数组【英文标题】:Using SwiftyJSON for subarray with Swift 3.1 【发布时间】:2017-05-20 18:14:34 【问题描述】:

我有一个 json 数据。我以前从未使用过 SwiftyJSON。我是第一次尝试。

我的 json 是这样的:

[

  "Id": 1,
  "Name": "A",
  "SubNames": [
  
    "SubId": 1,
    "SubName": "A1"
  ,
  
    "SubId": 2,
    "SubName": "A2"
  ]
,

  "Id": 2,
  "Name": "B",
  "SubNames": [
  
    "SubId": 1,
    "SubName": "B1"
  ,
  
    "SubId": 2,
    "SubName": "B2"
  ]

]

我可以处理名称并附加一个数组。但我无法处理子名称。我尝试了一些东西,但不幸的是没有用。我想将 SubNames 附加一个数组。这个数组会是这样的:

[["A1","A2"],["B1","B2"]]

我使用这个代码:

let json = JSON(data: data!)
for (_,subJson):(String, JSON) in json                 
self.names.append(subJson["Name"].stringValue

【问题讨论】:

使用 swiftyjson 显示你为这个 json 结构准备的模型。 @AnilKumar 我编辑了我的问题。这够了吗?谢谢。 @AnilKumar 对不起,我不明白你能解释一下吗? 你应该为此创建两个模型,一个模型包含“Id”:intType,“Name”:stringType,“SubNames”:[subNames],另一个是包含“SubId”的subNames : intType, "SubName": stringType @AnilKumar 谢谢你的解释。我没有使用之前的模型,因此我不知道如何使用。如果你有时间可以给我看看吗?或者你可以给我一个源链接? 【参考方案1】:

试试这个来访问那些字段,你不应该在这里做data!

guard let `data` = data else 
    //no data handling
    return 

let dataArray = JSON(data: data).arrayValue
var arrayOfAllSubnames: [[String]] = [[]]

for object in dataArray 
    var arrayOfSubnames: [String] = []
    if let subnames = object["SubNames"].array 
        for subname in subnames 
            //here you get `"SubId": 2, "SubName": "B2"` object
            let subnameValue = subname["SubName"].stringValue
            arrayOfSubnames.append(subnameValue)
        
    
    arrayOfAllSubnames.append(arrayOfSubnames)

【讨论】:

谢谢。但我的问题集中在数组 SubName 中,如下所示:[["A1","A2"],["B1","B2"]]【参考方案2】:

Swift 3.0

1) 首先声明子名称数组。

var subNameArray: [[String]] = []

2) 您可以访问和存储这些对象,如下所示。

let json = JSON(data: data!).arrayValue

for item in json 

   var tempArray: [String] = []

   let name = item["Name"].stringValue

   for subNameItem in items["SubNames"].arrayValue 
     tempArray.append(subNameItem["SubName"].stringValue)
    
  subNameArray.append(tempArray)

【讨论】:

谢谢,但首先@JuicyFruit 回答了。我会接受他的,对不起。 不是问题,很高兴您得到了最终答案。继续提问

以上是关于将 SwiftyJSON 用于 Swift 3.1 的子数组的主要内容,如果未能解决你的问题,请参考以下文章

SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中

使用 swiftyjson 和 swift 解析嵌入的 json

使用 SwiftyJSON 将 JSON 数组反序列化为 Swift 对象

SwiftyJSON 不工作 / Swift 1.2 SwiftyJSON 文件

将 SwiftyJSON 中的元素添加到 Swift 中的 URL 数组

如何在 Swift 3.0 中使用 SwiftyJSON 将 JSON 数据分配给 UILabel?