JSON

Swift JSON 数据(3)

字号+ 作者:H5之家 来源:H5之家 2017-01-26 16:01 我要评论( )

这种数据,如果你打开了AllowFragments, 是完全可以正常解析的(注意两边的双引号,这个也包含在返回的数据中)。而如果你没有打开这个选项,对于这种数据就会解析失败了。 var jsonFragmentString = "\"something

这种数据,如果你打开了AllowFragments, 是完全可以正常解析的(注意两边的双引号,这个也包含在返回的数据中)。而如果你没有打开这个选项,对于这种数据就会解析失败了。

var jsonFragmentString = "\"something wrong about api\"" as NSString let jsonFragmentData = jsonFragmentString.dataUsingEncoding(NSUTF8StringEncoding) if let jsonObj: AnyObject = NSJSONSerialization.JSONObjectWithData(jsonFragmentData!, options: .AllowFragments, error: nil) { //使用 AllowFragments 选项,解析成功。 print(jsonObj) }

看完上面的代码,相信大家瞬间就明白了,原来这家伙是做这个用的。

** MutableLeaves **
MutableLeaves选项,这个选项让我一直百思不得其解,文档上说,使用了这个选项后,所有对象的叶子节点的字符串属性,都会变成NSMutableString,而我试遍多种文档,也未验证出来,得到的字符串依然是NSString而不是NSMutableString。 使用 NSJSONSerialization 创建 JSON 数据

刚才我们了解到如何用NSJSONSerialization来解析数据。同样的,我们还可以使用NSJSONSerialization来构建 JSON 数据。

让我们看一下下面的代码:

let names = ["Jobs","Cook","Ive"] if let jsonData = NSJSONSerialization.dataWithJSONObject(names, options: NSJSONWritingOptions.allZeros, error: nil) { let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding) // ["Jobs","Cook","Ive"] }

我们使用dataWithJSONObject方法将 JSON 对象转换成 JSON 数据,我们传入的对象可以是数组也可以是字典,分别对应了 JSON 中的数组和对象。

我们注意到dataWithJSONObject这个方法也有个options选项,它用来控制构建 JSON 时的选项,类型为NSJSONWritingOptions。它只有一个选项,就是NSJSONWritingOptions.PrettyPrinted。

这个选项的作用也不言而喻,就是让生成的 JSON 数据是良好的格式化的:

let jsonObj = ["name":"Jobs","friends":["Ive","Cook"]] if let jsonData = NSJSONSerialization.dataWithJSONObject(jsonObj, options: NSJSONWritingOptions.PrettyPrinted, error: nil) { let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding) }

使用PrettyPrinted选项,我们输出的 JSON 就是这样一个良好格式化的:

{ "name": "Jobs", "friends": [ "Ive", "Cook" ] }

如果我们没有使用这个选项,那么我们得到的输出就是这样:

{"name": "Jobs","friends": ["Ive","Cook"]}

区别就在这,这下明白了吧。



 

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

相关文章
  • Jquery - jquery 循环输出json数据实例

    Jquery - jquery 循环输出json数据实例

    2017-01-26 09:00

  •  extJs 2.1学习札记(JSON序列化篇)

    extJs 2.1学习札记(JSON序列化篇)

    2017-01-25 15:00

  • ASP.NET不拖控件教程(1)-认识JSON

    ASP.NET不拖控件教程(1)-认识JSON

    2017-01-24 17:00

  • Json学习笔记(二)

    Json学习笔记(二)

    2017-01-24 17:00

网友点评
w