当前位置: 首页 > 面试题库 >

如何在Swift中将JSON数组解析为数组

沙宣
2023-03-14
问题内容

我正在尝试解析如下的JSON

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

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

到[[“ Jack”,“ Jones”,“ Rock”,“ Taylor”,“ Rob”],[“ Rose”,“ John”],[“ Ted”]]的数组

这是数组的数组。

我尝试了下面的代码

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)
            }

        }

当我打印“人”时,我得到o / p为

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

我很困惑当“人物”重复3次时如何解析

尝试在UITableView中显示内容,其中第一个单元格具有“ Jack” ..“ Rob”,第二个单元格具有“ Rose”,“
John”,第三个单元格为“ Ted”

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


问题答案:
 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)

输出:

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

在您的情况下,它将是:

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)
}


 类似资料:
  • 问题内容: 我正在使用一个API,该API返回如下所示的JSON 在Swift中,我使用两个函数来获取并解析JSON 然后我用 可以很好地解析JSON。当我打印出 我得到了数组的所有内容。但是,我无法访问每个单独的索引。我很肯定这是一个数组,因为我之间 返回正确的长度。但是,如果我尝试通过使用访问单个索引 XCode关闭语法高亮显示并给我以下信息: 并且代码将无法编译。 这是XCode 6的错误,

  • 问题内容: 我正在使用Weather Underground API制作应用程序,但在解析与严重警报有关的代码块时遇到了麻烦。JSON使用具有子键值对的键值对- 这对我来说不是问题,因为我可以从中选出后续的NSDictionary-但严重警报的条目被证明是有问题的。见下文: “警报”对与我已经解析的其他对有所不同,因为它在子值周围有这个 []括号 ,而且我不确定如何清除它,以便可以访问子值。在我能

  • 问题内容: 输出: 我有api调用返回的结果,它就像对象数组(json数组)的复杂格式。我需要通过golang解析该结果,我该如何实现?以下数据是我的结果,它是从api调用获取的。 问题答案: 您仅错过了一点:您需要导出结构的字段: 它将起作用(在Go Playground上尝试): 请注意,JSON文本包含带有小写字母文本的字段名称,但是包足够“聪明”以匹配它们。如果它们完全不同,则可以使用st

  • 问题内容: 我是新手,现在遇到了麻烦。所以我需要做的就是将此数组另存为iPhone文件的json文件。 然后可以将其读回到另一个数组中。有人可以告诉我该怎么做吗?或提供确切的代码来完成此操作。 编辑:我发现了一个例子。这是他们设置数据的方式: 并且您可以通过以下方式访问它: 但是我需要能够执行同样的操作,但是需要保存在文档文件夹中的文件中。 问题答案: 我建议您使用SwiftyJSON框架。究其文

  • 我正在尝试使用jQuery将此对象转换为数组 我试图得到这样的数组输出: 怎样?

  • 问题内容: 我正在使用Sencha Touch(ExtJS)从服务器获取JSON消息。我收到的消息是这个: 我的问题是我无法解析此JSON对象,因此我可以使用每个计数器对象。 我正在尝试像这样完成: 我究竟做错了什么 ?谢谢! 问题答案: Javascript具有针对字符串的内置JSON解析,我想这就是您拥有的: 在您的示例中使用此代码将是: 编辑 :for循环的使用中有一个错误(我在初读时就错过