将 JSON 响应转换为 Dictionary Swift
Posted
技术标签:
【中文标题】将 JSON 响应转换为 Dictionary Swift【英文标题】:Converting JSON reponse to an Dictonary Swift 【发布时间】:2015-09-14 20:14:41 【问题描述】:我在将我的 JSON 响应转换为字典时遇到了一些严重的问题,这样我就可以同时在我的应用程序中使用一些静态数据,而不必一直等待请求。所以我的 JSON 格式如下所示
JSON 响应
stories = (
"Article_Link" = "http://www.webdesignernews.com/ad_redirect?id=53";
"Article_Shares" = "";
"Article_Time" = "";
"Article_Title" = "35 free images: Choose from Bigstock's library of 27 million\n[ad]";
index = 1;
source = "Web-Designer-Depot_recent";
url = "http://www.webdesignernews.com/";
,
"Article_Link" = "http://www.webdesignernews.com/redirect?url=http%3A%2F%2Ftympanus.net%2Fcodrops%2F2015%2F09%2F14%2Fcreating-material-design-ripple-effects-svg%2F";
"Article_Shares" = 298;
"Article_Time" = "32 min ago";
"Article_Title" = "Creating Material Design Ripple Effects with SVG";
index = 2;
source = "Web-Designer-Depot_recent";
url = "http://www.webdesignernews.com/";
);
这是我尝试创建的字典,以便在操场文件中重新创建以下响应
Swift 字典
var data: [String:AnyObject] [
"stories": [
[
"Article_Link": "http://www.webdesignernews.com/ad_redirect?id:51",
"Article_Shares" : "",
"Article_Time" : "",
"Article_Title" : "Going Retro! 150 Vintage Vector Illustrations\n[ad]",
"index" : 1,
"source" : "Web-Designer-Depot",
"url" : "http://www.webdesignernews.com/",
],
[
"Article_Link" : "http://www.webdesignernews.com/redirect?url:http%3A%2F%2Fprinzhorn.github.io%2Fskrollr%2F",
"Article_Shares" : "2.3K",
"Article_Time" : "23 min ago",
"Article_Title" : "Skrollr - Scroll Animations for Everyone",
"index" : 2,
"source" : "Web-Designer-Depot",
"url" : "http://www.webdesignernews.com/",
]
]
]
但我不断收到以下一些错误
似乎无法弄清楚我在这里做错了什么......
【问题讨论】:
您忘记将 = 添加到您的数据中。 var data: [String:AnyObject] = 应该是这样的。 【参考方案1】:您的 JSON 响应包含数组。你的数据字典应该是这样的:
var data: [String:AnyObject] = [
"stories": [
[
"Article_Link": "http://www.webdesignernews.com/ad_redirect?id:51",
"Article_Shares" : "",
"Article_Time" : "",
"Article_Title" : "Going Retro! 150 Vintage Vector Illustrations\n[ad]",
"index" : 1,
"source" : "Web-Designer-Depot",
"url" : "http://www.webdesignernews.com/",
],
[
"Article_Link" : "http://www.webdesignernews.com/redirect?url:http%3A%2F%2Fprinzhorn.github.io%2Fskrollr%2F",
"Article_Shares" : "2.3K",
"Article_Time" : "23 min ago",
"Article_Title" : "Skrollr - Scroll Animations for Everyone",
"index" : 2,
"source" : "Web-Designer-Depot",
"url" : "http://www.webdesignernews.com/",
]
]
]
然后您可以解析您的字典,例如:
for story in data["stories"] as! NSArray
println(story.valueForKey("Article_Link"))
【讨论】:
嘿,伙计,我已经使用 swiftyJSON 对其进行了解析,我只想创建一个静态版本的数据,我已经添加了您的建议并插入了以下var data: AnyObject? = [String:AnyObject]() [......]
,但我仍然得到一个错误
我在回答中编辑的字典没有给我任何错误。
嘿伙计,我可以访问data["stories"][0]["Article_Title"]
之类的数据而不是使用循环吗?
我认为在 SwiftyJson 中你可以做到这一点。但以我的方式,你不能访问这样的数据。我建议你为你的数据创建一个模型并在你的模型中解析它。以上是关于将 JSON 响应转换为 Dictionary Swift的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型为“Newtonsoft.Json.Linq.JObject”的对象转换为类型“System.Collections.Generic.Dictionary`2[System.String,S
如何使用 JayRock 将 Json 字符串转换为带有 Dictionary 的对象
如何将 JSON 转换为 Swift Dictionary 以进行 HTTP POST
如何将 Optional<Dictionary<String, Any>> 转换为 Dictionary<String, Any> 以发送带有 json 参数的 A