初学 iOS,关于 JSONSerialization 行为的问题?

2016-11-23 09:15:45 +08:00
 HannibaI

需要解析的 json 是这个: www.zimuzu.tv/resource/index_json/rid/33701/channel/tv (去掉首行的"var index_info=")

可以在 http://tool.oschina.net/codeformat/json 进行可视化

相关代码是这样

let json = try? JSONSerialization.jsonObject(with: data, options: [])
if let dictionary = json as? [String: Any] {
    if let array = dictionary["prevue"] as? NSArray {
    	print(array[0])
    }
}

问题是:

{
    episode = 9;
    "play_time" = "2016-11-28";
    season = 1;
    t = 1480348800;
    week = "\U5468\U4e00";
}

附:官方博客对 JSONSerialization 的示范代码 : developer.apple.com/swift/blog/?id=37

3383 次点击
所在节点    iDev
13 条回复
expkzb
2016-11-23 09:29:50 +08:00
你打印出来的是对象的 "description" ,不是 json 原始字符串,所以看不到引号
miketeam
2016-11-23 09:46:24 +08:00
print 打印做处理了。你可以显示在 view 上看效果。
miketeam
2016-11-23 09:50:24 +08:00
返回类型可以判断,或者断言,不建议强转。第二个问题同第 3 个问题,也有可能出来的是数组,怎么变字典呢?
HannibaI
2016-11-23 09:54:50 +08:00
@expkzb
@miketeam
谢谢!解决了!
不过很奇怪为什么第一层的 Any 只能转换成 NSArray 不能转换成[String: Any]

paradoxs
2016-11-23 09:57:20 +08:00
一般不会用这个的, 用 YYModel
HannibaI
2016-11-23 10:00:51 +08:00
@miketeam 官方博客上对返回类型的处理是转换成字典,然后对于第二层的处理也是转换成字典,我查了文档也只是说返回的会是基本类型的某一种。我看了一下我的数据格式和官方博客上的差不多,所以就奇怪为什么我的第二层不能转换成字典而是转换成数组
HannibaI
2016-11-23 10:04:11 +08:00
@paradoxs 谢谢!看了一下好像没有 Swift 版...
loveuqian
2016-11-23 10:06:17 +08:00
从来没用过这个东西

swift 用 SwityJSON
HannibaI
2016-11-23 10:23:20 +08:00
@loveuqian 谢谢!我试试
miketeam
2016-11-23 10:50:08 +08:00
@loveuqian 你这么说我就不认同了啊。虽说第三方好用,但是苹果自带的东西也是蛮强大的。有时候几行代码可以搞定,弄个第三方库感觉很累。。
InfinitySam
2016-11-23 20:36:13 +08:00
@HannibaI 看具体的 json 结构啊,你可以用 writeToFile funciton 将它保存为 plist 文件,这样就很清晰了
kitalphaj
2016-11-24 09:35:35 +08:00
@HannibaI 第一层你可以看看 prevue 对应的 值 很显然是个数组。你如果想一步到位可以用 as? [[String: Any]]
HannibaI
2016-11-25 06:51:46 +08:00
@kitalphaj 确实是这样的 谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX