JSON

使用Swift进行JSON解析(2)

字号+ 作者:H5之家 来源:H5之家 2016-09-14 14:00 我要评论( )

self .enums = try parser.fetch( enums ) { (array: [ String ]) in array.flatMap( SomeEnum (rawValue: $ 0 )) } 由于这行显得有些粗糙,让我们在 Parser 中创建一个新的方法来专门处理数组: fetched.flatMap(t

self.enums = try parser.fetch("enums") { (array: [String]) in array.flatMap(SomeEnum(rawValue: $0)) }

由于这行显得有些粗糙,让我们在 Parser 中创建一个新的方法来专门处理数组:

fetched.flatMap(transformation) }

这里使用 flatMap 来帮助我们移除空值,减少了代码量:

self.enums = try parser.fetchArray("enums") { SomeEnum(rawValue: $0) }

末尾的这个闭包应该被作用于 每个 元素,而不是整个数组(你也可以修改 fetchArray 方法,以在任意值无法被构建时抛出错误。)

我很喜欢泛型模式。它很简单,可读性强,而且也没有复杂的依赖(这只是个 50 行的 Parser 类型)。它使用了 Swift 风格的结构, 还会给你非常特定的错误提示,告诉你 为何 解析失败了,当你在从服务器返回的 JSON 沼泽中摸爬滚打时,这显得非常有用。最后,用这种方法解析的另外一个好处是,它在结构体和类上都能很好地工作,这使得从引用类型切换到值类型,或者反之,都变得很简单。

这里 是包含所有代码的一个 gist,而 这里 是一个作为补充的 Playground.

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 详谈 Jquery Ajax 异步处理Json数据.

    详谈 Jquery Ajax 异步处理Json数据.

    2016-09-14 15:00

  • php使用json_decode返回NULL

    php使用json_decode返回NULL

    2016-09-14 13:00

  • 快速上手 JSON

    快速上手 JSON

    2016-09-14 13:01

  • 让C#可以像Javascript一样操作Json

    让C#可以像Javascript一样操作Json

    2016-09-13 18:00

网友点评