Arrays 如何使用JSON文件中的数据填充数组

Arrays 如何使用JSON文件中的数据填充数组,arrays,json,swift,Arrays,Json,Swift,我正在开发一个应用程序,它可以读取购物中心的名称和坐标。然后将其与用户的当前位置进行比较,以便用户只能看到周围最近的购物中心。出于这个原因,我想将所有的名称和位置放入2个数组中,并将它们与用户的当前位置进行比较。然后,我将为segue准备它们,并将它们发送到我的TableViewController,在那里我将在不同的单元格中显示它们 我是斯威夫特的新手,如果有人能帮我做到这一点,我会很高兴 我的JSON文件是: { "People": { "Person0": {

我正在开发一个应用程序,它可以读取购物中心的名称和坐标。然后将其与用户的当前位置进行比较,以便用户只能看到周围最近的购物中心。出于这个原因,我想将所有的名称和位置放入2个数组中,并将它们与用户的当前位置进行比较。然后,我将为segue准备它们,并将它们发送到我的
TableViewController
,在那里我将在不同的单元格中显示它们

我是斯威夫特的新手,如果有人能帮我做到这一点,我会很高兴

我的JSON文件是:

{
    "People": {
        "Person0": {
            "A1": "New York",
            "B1": "ShoppingMall1",
            "C1": "43.0757",
            "D1": "23.6172"
        },

        "Person1": {
            "A1": "London",
            "B1": "ShoppingMall2",
            "C1": "44.0757",
            "D1": "24.6172"
        },
        "Person2": {
            "A1": "Paris",
            "B1": "ShoppingMall3",
            "C1": "45.0757",
            "D1": "25.6172"
        },
        "Person3": {
            "A1": "Bern",
            "B1": "ShoppingMall4",
            "C1": "41.0757",
            "D1": "21.6172"
        },
        "Person4": {
            "A1": "Sofia",
            "B1": "ShoppingMall5",
            "C1": "46.0757",
            "D1": "26.6172"

        }
    }
}
没有第三方库: Swift 3:

func convertStringToDictionary(text: String) -> [String:AnyObject]? {
    if let data = text.data(using: String.Encoding.utf8) {
        do {
            return try JSONSerialization.jsonObject(with: data, options: []) as? [String:AnyObject]
        } catch let error as NSError {
            print(error)
        }
    }
    return nil
}
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
    if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
        do {
            return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
        } catch let error as NSError {
            print(error)
        }
    }
    return nil 
}
Swift 2:

func convertStringToDictionary(text: String) -> [String:AnyObject]? {
    if let data = text.data(using: String.Encoding.utf8) {
        do {
            return try JSONSerialization.jsonObject(with: data, options: []) as? [String:AnyObject]
        } catch let error as NSError {
            print(error)
        }
    }
    return nil
}
func convertStringToDictionary(text: String) -> [String:AnyObject]? {
    if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
        do {
            return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
        } catch let error as NSError {
            print(error)
        }
    }
    return nil 
}
然后你就有了一本字典,你可以像这样接触你的人民:

let dict = convertStringToDictionary(jsonText)
print(dict["People"])
{
    "People": [{
            "A1": "New York",
            "B1": "ShoppingMall1",
            "C1": "43.0757",
            "D1": "23.6172"
        },
        {
            "A1": "London",
            "B1": "ShoppingMall2",
            "C1": "44.0757",
            "D1": "24.6172"
        }, {
            "A1": "Paris",
            "B1": "ShoppingMall3",
            "C1": "45.0757",
            "D1": "25.6172"
        }, {
            "A1": "Bern",
            "B1": "ShoppingMall4",
            "C1": "41.0757",
            "D1": "21.6172"
        }, {
            "A1": "Sofia",
            "B1": "ShoppingMall5",
            "C1": "46.0757",
            "D1": "26.6172"

        }
    ]
}
对于json,您不能拥有数组,因为您应该像这样更改json:

let dict = convertStringToDictionary(jsonText)
print(dict["People"])
{
    "People": [{
            "A1": "New York",
            "B1": "ShoppingMall1",
            "C1": "43.0757",
            "D1": "23.6172"
        },
        {
            "A1": "London",
            "B1": "ShoppingMall2",
            "C1": "44.0757",
            "D1": "24.6172"
        }, {
            "A1": "Paris",
            "B1": "ShoppingMall3",
            "C1": "45.0757",
            "D1": "25.6172"
        }, {
            "A1": "Bern",
            "B1": "ShoppingMall4",
            "C1": "41.0757",
            "D1": "21.6172"
        }, {
            "A1": "Sofia",
            "B1": "ShoppingMall5",
            "C1": "46.0757",
            "D1": "26.6172"

        }
    ]
}

建议:不要使用带有PersonX键的字典,而是使用JSON中的person数组。非常感谢您的回答。一个问题:您将JSON文件的名称写入何处,以便应用程序知道从哪个JSON文件获取数据。这取决于您的JSON是在应用程序包中还是从服务器下载的。这是从URL获取的link@IvanSosev阅读此指南:谢谢,我可以做到,但我仍然无法在字典中找到确切的内容。我必须比较位置,如果我比较整个字典,我还将比较保存的名称。我不想比较它们,我只需要JSON文件中的C1和D1,名称A1和B1必须显示在另一个字典中