加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Swift 3中进行JSON解析

发布时间:2020-12-14 05:54:11 所属栏目:百科 来源:网络整理
导读:有没有人能够找到一种方法来解析Swift 3中的JSON文件?我已经能够获得数据返回,但是当将数据分解成特定字段时,我不成功。我会发布示例代码,但我已经经历了这么多不同的方法不成功,没有保存任何。我想解析的基本格式是这样的。提前致谢。 { "Language": {
有没有人能够找到一种方法来解析Swift 3中的JSON文件?我已经能够获得数据返回,但是当将数据分解成特定字段时,我不成功。我会发布示例代码,但我已经经历了这么多不同的方法不成功,没有保存任何。我想解析的基本格式是这样的。提前致谢。
{
  "Language": {

    "Field":[
          {
          "Number":"976","Name":"Test"
          },{
          "Number":"977","Name":"Test"
          }
       ]
   }
}
你有没有尝试过JSONSerialization.jsonObject(with:options :)?
var jsonString = "{" +
    ""Language": {" +
    ""Field":[" +
    "{" +
    ""Number":"976"," +
    ""Name":"Test"" +
    "}," +
    "{" +
    ""Number":"977"," +
    ""Name":"Test"" +
    "}" +
    "]" +
    "}" +
    "}"

var data = jsonString.data(using: .utf8)!

let json = try? JSONSerialization.jsonObject(with: data)

Swift有时会产生一些非常奇怪的语法。

if let number = json?["Language"]??["Field"]??[0]?["Number"] as? String {
    print(number)
}

JSON对象层次结构中的所有内容最终都被包装为可选(即AnyObject?)。阵列< T>下标返回一个不可选的T.对于包含在可选的数组下标中的JSON,返回Optional< AnyObject&gt ;.然而,词典< K,V>下标返回可选的< V&gt ;.对于这个JSON,下标返回非常奇怪的样子
任选的LT;任选的LT; AnyObject>> (即AnyObject ??)。

> json是可选的< AnyObject>。
> json?[“Language”]返回一个可选的< Optional< AnyObject>>。
> json?[“Language”] ?? [“Field”]返回一个可选的< Optional< AnyObject>>。
> json?[“Language”] ?? [“Field”] ?? [0]返回一个可选< AnyObject&gt ;.
> json?[“Language”] ?? [“Field”] ?? [0]?[“Number”]返回一个可选< Optional< AnyObject>&gt ;.
> json?[“Language”] ?? [“Field”] ?? [0]?[“Number”] as? String返回一个可选的< String>。

可选的< String>然后由if语法用于产生一个String。

最后注意:迭代字段数组看起来像这样。

for field in json?["Language"]??["Field"] as? [AnyObject] ?? [] {
    if let number = field["Number"] as? String {
        print(number)
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读