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