我是SWIFT的新手,在从JSON文件中过滤空值并将其设置到Dictionary时遇到问题. 我从服务器收到空值的JSON响应,它使我的应用程序崩溃.

Here is JSON response:

"FirstName": "Anvar",
"LastName": "Azizov",
"Website": null,
"About": null,

I will be very appreciated for help to deal with it.

UPD1: At this moment I decided to do it in a next way:

if let jsonResult = responseObject as? [String: AnyObject] {                    
    var jsonCleanDictionary = [String: AnyObject]()

    for (key, value) in enumerate(jsonResult) {
      if !(value.1 is NSNull) {
         jsonCleanDictionary[value.0] = value.1
      }
    }
}

推荐答案

可以创建一个数组,其中包含对应值为零的键:

let keysToRemove = dict.keys.array.filter { dict[$0]! == nil }

and next loop through all elements of that array and remove the keys from the dictionary:

for key in keysToRemove {
    dict.removeValueForKey(key)
}

Update 2017.01.17

正如 comments 中所解释的,强制展开操作符虽然安全,但有点难看.可能还有其他几种方法可以达到相同的效果,相同方法的一种更好看的方法是:

let keysToRemove = dict.keys.filter {
  guard let value = dict[$0] else { return false }
  return value == nil
}

Json相关问答推荐

JOLT转换过滤出特定值/对象

筛选JSON数组以使用Jolt仅保留具有最新日期/时间的条目

将JSON输入子数组转换为字符串顺序列表输出

在解码的JSON哈希中搜索数组元素

将JSON行转换为TSV格式, for each 数组项生成单独的行

取消嵌套数组并将数组名称添加为附加字段

Oracle json 对象的最后一个值不在引号中

将 json 文件转换为 json 对象会打乱对象的顺序

将文本转换为 python 列表

TSQL FOR JSON 嵌套值

如何比较 JSON 文档并返回与 Jackson 或 Gson 的差异?

如何将任意 json 对象发布到 webapi

JSON RPC - 什么是id?

Java的JSON字符串整洁/格式化程序

如何在不消除对象歧义的情况下使用 circe 解码 ADT

如何自动修复无效的 JSON 字符串?

Json.NET 是否缓存类型的序列化信息?

是否可以将数据写入本地 json 文件,除了Angular 之外什么都没有?

在 Webpack 中加载静态 JSON 文件

如何在 React js 中解析本地 JSON 文件?