使用SwiftyJSON和AlamoFire解析数据并在视图之间传输
我正在尝试反序列化数组中的JSON对象。我使用的是SwiftyJSON,但程序的运行方式与我预期的不同 这是阵列:使用SwiftyJSON和AlamoFire解析数据并在视图之间传输,json,swift,Json,Swift,我正在尝试反序列化数组中的JSON对象。我使用的是SwiftyJSON,但程序的运行方式与我预期的不同 这是阵列: var GamesList = [JSON](); 该数组包含我的2个JSON对象: { “游戏类型”:“传统”, “游戏玩家/赢家”:“, “游戏状态”:“已开始”, “自左”:“2”, “自我权利”:“1”, “self_name”:“test2”, “对手右”:“1”, “对手名称”:“测试1”, “游戏指南”:“153fac87-bfc4-367f-41fa-944753
var GamesList = [JSON]();
该数组包含我的2个JSON对象:
{
“游戏类型”:“传统”,
“游戏玩家/赢家”:“,
“游戏状态”:“已开始”,
“自左”:“2”,
“自我权利”:“1”,
“self_name”:“test2”,
“对手右”:“1”,
“对手名称”:“测试1”,
“游戏指南”:“153fac87-bfc4-367f-41fa-944753dc32c8”,
“游戏空闲时间”:755858,
“对手左”:“3”
}, {
“游戏类型”:“传统”,
“游戏玩家/赢家”:“,
“游戏状态”:“已开始”,
“自左”:“2”,
“自我权利”:“1”,
“self_name”:“test2”,
“对手右”:“1”,
“对手名称”:“约翰内斯瓦特”,
“游戏指南”:“153fac87-bfc4-367f-41fa-944753dc32c9”,
“游戏空闲时间”:755858,
“对手左”:“3”
}]hier是je游戏状态:可选({
“游戏类型”:“传统”,
“游戏玩家/赢家”:“,
“游戏状态”:“已开始”,
“自左”:“2”,
“自我权利”:“1”,
“self_name”:“test2”,
“对手右”:“1”,
“对手名称”:“testuser”,
“游戏指南”:“153fac87-bfc4-367f-41fa-944753dc32c9”,
“游戏空闲时间”:755858,
“对手左”:“3”
}
我创建了一个新的JSON对象,并用数组中的object 1值填充它:
var gameState : JSON?;
self.gameState = GamesList[1];
当我将整个self.gameState对象打印到控制台时,一切都很好,看起来就像我期望的那样。但是,当我只想使用这个JSON对象的1个值时,我似乎无法让它工作
我试过:
self.gameState["game_type"].string;
以及:
但这两者都不是编译。我做错了什么?我可以看出这可能会令人沮丧,但这实际上是一个非常简单的修复方法。 我和阿拉莫菲尔一起工作时也遇到过同样的问题 我可以理解为什么它没有编译,您正在尝试从
数组中检索键
,例如:
self.gameState["game_type"]
但是数组
类型没有键:值
对,很简单,它是通过索引访问的:
self.gameState[1]
步骤1
因此,不要使用数组,而是将JSON放入字典。然后,按照以下步骤操作:
确保JSON数据存储在字典中,如:
let jsonData: [String:String] = //your JSON
(如果要在jsonData
中操作数据,请使用var键盘
步骤2
JSON数据存储在字典中后,只需执行以下操作:
let gameState = jsonData["game_type"]!
从那以后你就不会有问题了
我希望我能解释一下,如果有什么不清楚的地方,请发表评论。谢谢你的回答!不幸的是,这没有帮助我解决问题。我在尝试执行以下操作时出错:self.gameState[1]。Xcode说明:无法用“int”类型的索引为“JSON”类型的值下标
let gameState = jsonData["game_type"]!