【问题标题】:Parse JSON String using Swift and SwiftyJSON使用 Swift 和 SwiftyJSON 解析 JSON 字符串
【发布时间】:2017-06-02 13:12:05
【问题描述】:

我正在尝试解析我在 swift 中使用循环手动创建的字符串。我把它做成了一个字符串,然后我厌倦了使用 Swifty JSON 将该字符串转换为 json。当我尝试遍历 json 时,我的代码永远不会进入循环。我怀疑存在数据类型问题,但我被卡住了。任何帮助,将不胜感激。这是我作为字符串创建的 json 结构

 [{
    "category_name": "AIR SYSTEM",
    "cntpassed": 0,
    "cntfailed": 0,
    "isfailed": 0,
    "isstarted": 1,
    "iscomplete": 1,
    "isnotcomplete": 0,
    "cnttotal": 5
}, {
    "category_name": "ENGINE COMPARTMENT",
    "cntpassed": 0,
    "cntfailed": 0,
    "isfailed": 0,
    "isstarted": 1,
    "iscomplete": 1,
    "isnotcomplete": 0,
    "cnttotal": 27
}, {
    "category_name": "EXTER.",
    "cntpassed": 0,
    "cntfailed": 0,
    "isfailed": 0,
    "isstarted": 1,
    "iscomplete": 1,
    "isnotcomplete": 0,
    "cnttotal": 3
}]

我用swifty json方法把它转成json

let json = JSON(jsonStringAbove)

然后我尝试快速循环遍历它

public func jsonFormSectionsArray(jsonString: String) -> Array<String>
 {
     print("In jsonFormsSectionArray")
     var anArray: [String] = []
     let json = JSON(jsonString)

     print("\nHeres the JSON \(json)")

     for (key, subJson) in json {
         // My code never gets to this point
         if let category = subJson["category_name"].string {
             print(category)
             anArray.append(category)
         }
     }

         print("PETE --> In Function Array \(anArray)")
         return anArray
 }

【问题讨论】:

  • 你必须从字符串而不是 Json 对象创建一个 Json 数组
  • @Aditya 是的!谢谢我明白了

标签: json swift swifty-json


【解决方案1】:

您的 JSON 看起来像一个字典数组,因此您无法使用键值对遍历它。您需要遍历数组。无需手动遍历字典的每一个键值对,知道键就可以直接查找值。

我不确定 SwiftyJSON 创建的 JSON 是如何表示的,但如果它是一个字典数组,这很好。

for dictionary in json {
     if let category = dictionary["category_name"] as? String {
         print(category)
         anArray.append(category)
     }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2019-11-29
    相关资源
    最近更新 更多