JSON .count 数组在 Swift 4 中总是返回 0

Posted

技术标签:

【中文标题】JSON .count 数组在 Swift 4 中总是返回 0【英文标题】:Array of JSON .count always returns 0 in Swift 4 【发布时间】:2018-06-22 09:34:04 【问题描述】:

我在 swift 中遇到了一些 JSON 问题。当我从 userDefault 存储(JSON 数组为字符串格式)获取 JSON 数据时,然后将其解析为 JSON 对象并计算数组中的对象数,但结果始终返回 O(零)。

我的快速代码:

 let carts = userStorage.object(forKey: userDefaultKeys.carts)
 print("logging carts....")
 print(JSON(carts  as! String).count)
 print(JSON(carts as! String))

它登录到结果窗口

logging carts....
0
[
 
  "Lat" : 32,
  "Time" : null,
  "Items" : [
    
     "StorePhone" : "018753678474",
     "Ingredient" : "",
     "FK_Category" : 2,
     "Enabled" : 1,
     "UpdatedAt" : null,
     "IsActive" : 1,
     "quantity" : 1,
    
   ],
   "DeliveryFee" : null,
   "Photos" : "https:\/\/networkposting.com\/wpcontent\/uploads\/2018\/02\/maxresdefaul-137.jpg"
 
]

【问题讨论】:

可变的购物车类型 给我完整的答复 我把它定义为任意类型的变量 指定数组类型 让 carts:NSArray = userStorage.object(forKey: userDefaultKeys.carts) 为! NSArray 【参考方案1】:

根据Usage Documentation on the GitHub page:

初始化

let json = JSON(data: dataFromNetworking)

let json = JSON(jsonObject)

if let dataFromString = jsonString.data(using: .utf8, allowLossyConversion: false) 
    let json = JSON(data: dataFromString)

所以你不能像你一样直接通过 String 初始化一个 SwiftyJSON 对象。

如果你有一个 JSON 字符串...首先使用上面的底部示例将其转换为数据。

【讨论】:

非常感谢。我先将字符串转换为数据,然后将数据解析为对象。效果很好

以上是关于JSON .count 数组在 Swift 4 中总是返回 0的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift 4中对数组中的JSON数据进行排序

如何在 Swift 4 ios 中编码 json 数组

在 swift 4 和 Xcode 9 中解码 ExpandableTableView 的嵌套 json 数组

我如何使用解码器在swift 4中解析tableview中的json数组

Swift 4 可解码的 json 数组

如何在 Swift 4 的 NSObject 类中初始化 json 内的数组?