【问题标题】:How to use JSONSerialization.jsonObject with jagged array (json data) from php in SWIFT 3如何在 SWIFT 3 中使用带有锯齿状数组(json 数据)的 JSONSerialization.jsonObject
【发布时间】:2017-02-28 14:35:44
【问题描述】:

所以我有一个从 php 文件返回的 JSON 数据:

{"is_success":1,"message":"Has sync","data":[{"id":"7","customer_id":"007"}]}

我有一个快速代码:

if var myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [NSDictionary]
{
            for jsonDict in myJSON
            {
                 var try: String = (jsonDict["customer_id"] as? String)!
            }
}

显然,由于[NSDictionary],它不会进入 if 语句。我尝试了其他指南中的[String: AnyObject][NSDictionary] 等,但它不起作用。有什么建议可以替换[NSDictionary]?谢谢!

【问题讨论】:

  • 您正在制作字典数组 [NSDictionary]... 它应该是字典 NSDictionary .. 在 swift3 中它应该是 [String:Any]
  • @EICaptainv2.0 我试过 [String:Any],它仍然不会进入那个 if 语句
  • if let myJSON = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:Any] { print("true")} .. 试试这个是否打印正确
  • @EICaptainv2.0 嘿,它仍然不会进入 if 语句 :( 我在执行该 if 语句之前放了 'print 1' ,并在 if 中放了 'print 2',它不会不知道为什么。它只是打印'print 1'
  • 感谢@EICaptainv2.0!它现在可以工作了:D

标签: ios json dictionary swift3 nsjsonserialization


【解决方案1】:

您的 JSON 响应类型为 Dictionary 而不是 Array

if let myJSON = try JSONSerialization.jsonObject(with: data!, options: []) as? [String : Any] {
    //For getting customer_id try like this
    if let data = myJSON["data"] as? [[String: Any]] {
        for jsonDict in data {
            var try = jsonDict["customer_id"] as? String
        } 
    }
}

在 Swift 中使用 Swift 本机 DictionaryArray 而不是 NSDictionaryNSArray,与我在答案中使用的方式相同。

【讨论】:

  • 我试过“if var myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String : Any] {}”,它仍然不会进入 if声明
  • @ReversedcigoL 如果不改变值,也可以使用if let 而不是if var
  • 嘿那里,它仍然不会进入 if 语句 :( 我在执行 if 语句之前放了 'print 1',然后在 if 中放了 'print 2',它不知道为什么.
  • 它只打印'print 1'
  • @ReversedcigoL 我不确定,但可能你会得到响应,因为字符串尝试一次if let myJSON = try JSONSerialization.jsonObject(with: data!, options: []) as? String { } 并添加打印语句并检查它是否正在打印。
猜你喜欢
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 2015-09-23
  • 2011-05-01
  • 1970-01-01
  • 2015-07-13
  • 2018-09-15
  • 2020-04-02
相关资源
最近更新 更多