我JSONSerialization在项目中经常使用。这是我的JSONSerialization代码示例:
JSONSerialization
let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]
注意 :缺少目的的选项,我通常在项目中使用它们。
我的问题是我不太确定这些功能options: []是什么?
options: []
我发现的有关选项的信息:
NSJSONReadingMutableContainers:
指定将数组和字典创建为可变对象。
NSJSONReadingMutableLeaves:
指定将JSON对象图中的叶字符串创建为NSMutableString的实例。
NSJSONReadingAllowFragments:
指定解析器应允许不是NSArray或NSDictionary实例的顶级对象。
注意2 :我在以下位置找到了这些定义:https : //developer.apple.com/reference/foundation/nsjsonreadingoptions
我的问题是 :有人可以解释一下这些选项之间的区别,我应该将它们用于什么,如果您可以向我展示这些选项的一些代码示例,那将是完美的:)。
任何帮助表示赞赏。
谢谢。
前两个选项的简短答案:
在Swift中忽略它们!
在Swift中,您可以仅通过var关键字使对象可变。
var
另一方面,在Objective-C中,您需要
NSJSONReadingMutableContainers
NSArray
NSMutableArray
NSDictionary
NSMutableDictionary
NSJSONReadingMutableLeaves
NSMutableString
在Objective-C和Swift中,如果您只 读取 JSON,则根本不需要可变性。
NSJSONReadingAllowFragments如果接收到的JSON的根对象 不是 数组而 不是 字典,则第三个选项很重要。 如果它 是 数组或字典,则也可以省略该选项。
NSJSONReadingAllowFragments
空括号对[]代表No options(options在Swift 3+中可以省略该参数)。
[]
No options
options