如何在 Swift 中将 JSON 数组解析为数组 [英] How to parse Array of JSON to array in Swift

查看:44
本文介绍了如何在 Swift 中将 JSON 数组解析为数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试解析如下所示的 JSON

<预><代码>[{人":[杰克",琼斯",摇滚",泰勒",抢"]},{人":[玫瑰",约翰"]},{人":[泰德"]}]

到一个数组,结果为:

[ [Jack"、Jones"、Rock"、Taylor"、Rob"]、[Rose"、John"]、[Ted";]]

这是数组的数组.

我尝试使用下面的代码

if let path = Bundle.main.path(forResource: "People", ofType: "json") {让 peoplesArray = 尝试!JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path)),选项:JSONSerialization.ReadingOptions()) 作为?[任何对象]对于 peoplesArray 中的人!{打印(人)}}

当我打印people"时我得到 o/p 为

<代码>{人 = (杰克",琼斯",摇滚",泰勒",抢");}{人 = (玫瑰",约翰");}...

当它有People"时我很困惑如何解析重复3次

尝试在 UITableView 中显示我的第一个单元格具有Jack"的内容..抢"和第二个单元格有玫瑰",约翰"第三个单元格为Ted"

请帮助我了解如何实现这一点

解决方案

 var peoplesArray:[Any] = [[人们": [杰克",琼斯",岩石",泰勒",抢"]],[人们": [玫瑰",约翰"]],[人们": [泰德"]]]var finalArray:[Any] = []对于 peoplesArray 中的 peopleDict {如果让 dict = peopleDict 作为?[String: Any], let peopleArray = dict["People"] as?[细绳] {finalArray.append(peopleArray)}}打印(finalArray)

输出:

[["Jack", "Jones", "Rock", "Taylor", "Rob"], ["Rose", "John"], ["Ted"]]

在您的情况下,它将是:

if let path = Bundle.main.path(forResource: "People", ofType: "json") {让 peoplesArray = 尝试!JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path)), options: JSONSerialization.ReadingOptions()) as?[任何]var finalArray:[Any] = []对于 peoplesArray 中的 peopleDict {如果让 dict = peopleDict 作为?[String: Any], let peopleArray = dict["People"] as?[细绳] {finalArray.append(peopleArray)}}打印(finalArray)}

I'm trying to parse JSON which is like below

[
  {
    "People": [
      "Jack",
      "Jones",
      "Rock",
      "Taylor",
      "Rob"
    ]
  },
  {
    "People": [
      "Rose",
      "John"

    ]
  },
  {
    "People": [
      "Ted"
    ]
  }
]

to an array which results in:

[ ["Jack", "Jones", "Rock", "Taylor", "Rob"] , ["Rose", "John"], ["Ted"] ]

which is array of arrays.

I tried with code below

if let path = Bundle.main.path(forResource: "People", ofType: "json") {
    let peoplesArray = try! JSONSerialization.jsonObject(
            with: Data(contentsOf: URL(fileURLWithPath: path)),
            options: JSONSerialization.ReadingOptions()
    ) as? [AnyObject]
    for people in peoplesArray! {
        print(people)
    }
}

when I print "people" I get o/p as

{
  People = (
    "Jack",
    "Jones",
    "Rock",
    "Taylor",
    "Rob"
  );
}
{
  People = (
    "Rose",
    "John"
  );
}
...

I'm confused how to parse when it has "People" repeated 3 times

Trying to display content in UITableView where my 1st cell has "Jack" .."Rob" and Second cell has "Rose" , "John" and third cell as "Ted"

PLease help me to understand how to achieve this

解决方案

 var peoplesArray:[Any] = [
    [
        "People": [
        "Jack",
        "Jones",
        "Rock",
        "Taylor",
        "Rob"
        ]
    ],
    [
        "People": [
        "Rose",
        "John"

        ]
    ],
    [
        "People": [
        "Ted"
        ]
    ]
  ]

 var finalArray:[Any] = []

 for peopleDict in peoplesArray {
    if let dict = peopleDict as? [String: Any], let peopleArray = dict["People"] as? [String] {
        finalArray.append(peopleArray)
    }
 }

 print(finalArray)

output:

[["Jack", "Jones", "Rock", "Taylor", "Rob"], ["Rose", "John"], ["Ted"]]

In your case, it will be:

if let path = Bundle.main.path(forResource: "People", ofType: "json") {
    let peoplesArray = try! JSONSerialization.jsonObject(with: Data(contentsOf: URL(fileURLWithPath: path)), options: JSONSerialization.ReadingOptions()) as? [Any]

    var finalArray:[Any] = []

    for peopleDict in peoplesArray {
        if let dict = peopleDict as? [String: Any], let peopleArray = dict["People"] as? [String] {
            finalArray.append(peopleArray)
        }
    }

    print(finalArray)
}

这篇关于如何在 Swift 中将 JSON 数组解析为数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆