Arrays 在Apple Swift中将json转换为数组的字符串数组

Arrays 在Apple Swift中将json转换为数组的字符串数组,arrays,json,swift,Arrays,Json,Swift,我正在使用Xcode编写我的第一个Swift程序(Swift 5.1) 我在挣扎。我只想将一个json字符串转换为两个数组。这里有一个很好的教程,但它太复杂了 下面是一个json字符串示例 { "Animals" : { "Mice" : ["Mickey", "Minnie"], "Ducks" : ["Donald", "Daisy"], "Elephants" : ["Dumbo", "Yzma"] }, "Movies" : { "1940s"

我正在使用Xcode编写我的第一个Swift程序(Swift 5.1)

我在挣扎。我只想将一个json字符串转换为两个数组。这里有一个很好的教程,但它太复杂了

下面是一个json字符串示例

{
  "Animals" :
  {
   "Mice" : ["Mickey", "Minnie"],
   "Ducks" : ["Donald", "Daisy"],
   "Elephants" : ["Dumbo", "Yzma"]
  },
  "Movies" :
  {
   "1940s" : ["Pinocchio", "Fantasia", "Dumbo"],
   "1950s" : ["Cinderella", "Treasure Island", "Peter Pan"],
   "1960s" : ["The Signs of Zorro", "Swiss Family Robinson", "Mary Poppins"],
   "1970s" : ["Herbie Rides Again", "Herbie Goes to Monte Carlo", "Freaky Friday"] 
  }
}
我想要的是最少的蹩脚代码,我可以粘贴到Swift游乐场中创建两个数组,因此在arrayAnimal[0][1]中,Minnie是Minnie,arrayAnimal[2][0]是Dumbo,arrayMovie[3][1]是Herbie去蒙特卡洛的例子

如果可以使用arrayAnimal[“mices”][1]获取Minnie,这是完美的,但目前我的重点是研究如何在Swift中反序列化json以获取数组


谢谢你

首先,你需要这个可编码的json模型。您应将其添加到单独的swift文件中:

  struct MyModel: Codable {
    let animals: Animals
    let movies: [String: [String]]

    enum CodingKeys: String, CodingKey {
        case Animals
        case Movies
    }
}

// MARK: - Animals
struct Animals: Codable {
    let mice, ducks, elephants: [String]

    enum CodingKeys: String, CodingKey {
        case Mice
        case Ducks
        case Elephants
    }
}

然后需要将字符串转换为数据:

let jsonData: Data? = jsonString.data(using: .utf8)
然后,您可以轻松地将数据解码为所需对象

let decoder = JSONDecoder()

do {
    let myModel= try decoder.decode(MyModel.self, from: jsonData)
} catch {
    print(error.localizedDescription)
}
最后,您可以通过解码对象访问所需的数据。 例如:

let anArrayOfStringsOfMices = myModel.animals.mice

这应该会有帮助。将JSON转储到编辑器中,从语言选择器中选择
swift
,然后为您完成所有艰苦的工作。它工作正常!谢谢你,虽然很简单,但如果让我自己去做的话,我仍会继续努力devices@Steve很高兴听到这个消息。最好检查我的答案并投票:)