一尘不染

JSONSerialization选项有什么作用,它们如何更改jsonResult?

swift

JSONSerialization在项目中经常使用。这是我的JSONSerialization代码示例:

let json = try JSONSerialization.jsonObject(with: data!, options: []) as? [String: Any]

注意 :缺少目的的选项,我通常在项目中使用它们。

我的问题是我不太确定这些功能options: []是什么?

我发现的有关选项的信息:

NSJSONReadingMutableContainers:

指定将数组和字典创建为可变对象。

NSJSONReadingMutableLeaves:

指定将JSON对象图中的叶字符串创建为NSMutableString的实例。

NSJSONReadingAllowFragments:

指定解析器应允许不是NSArray或NSDictionary实例的顶级对象。

注意2
:我在以下位置找到了这些定义:https
:
//developer.apple.com/reference/foundation/nsjsonreadingoptions

我的问题是 :有人可以解释一下这些选项之间的区别,我应该将它们用于什么,如果您可以向我展示这些选项的一些代码示例,那将是完美的:)。

任何帮助表示赞赏。

谢谢。


阅读 284

收藏
2020-07-07

共1个答案

一尘不染

前两个选项的简短答案:

在Swift中忽略它们!

在Swift中,您可以仅通过var关键字使对象可变。

另一方面,在Objective-C中,您需要

  • NSJSONReadingMutableContainers使嵌套的集合类型可变NSArrayNSMutableArrayNSDictionaryNSMutableDictionary
  • NSJSONReadingMutableLeaves使值字符串可变→ NSMutableString

在Objective-C和Swift中,如果您只 读取 JSON,则根本不需要可变性。

NSJSONReadingAllowFragments如果接收到的JSON的根对象 不是 数组而 不是 字典,则第三个选项很重要。
如果它 数组或字典,则也可以省略该选项。

空括号对[]代表No optionsoptions在Swift 3+中可以省略该参数)。

2020-07-07