ios - JSON 到数组的转换

标签 ios arrays json xcode8

我正在尝试将 JSON 字符串转换为数组。 JSON 字符串是:

[
  {
    "field_value" : "28 Aug 2017",
    "field_data_type_combo_value" : "",
    "field_data_type_category_id" : "1",
    "form_id" : "19",
    "field_id" : "133",
    "message_unique_id" : "7941501245582800298",
    "field_data_type_combo_id" : "0",
    "field_data_type_id" : "1"
  },
  {
    "field_value" : "",
    "field_data_type_combo_value" : "",
    "field_data_type_category_id" : "9",
    "form_id" : "19",
    "field_id" : "134",
    "message_unique_id" : "7941501245582714588",
    "field_data_type_combo_id" : "0",
    "field_data_type_id" : "26"
  },
  {
    "field_value" : "hk",
    "field_data_type_combo_value" : "",
    "field_data_type_category_id" : "6",
    "form_id" : "19",
    "field_id" : "135",
    "message_unique_id" : "7941501245582699681",
    "field_data_type_combo_id" : "0",
    "field_data_type_id" : "17"
  }
]

我的转换码是

if let data = text.data(using: .utf8) {
    do {
        return try JSONSerialization.jsonObject(with: data, options: .mutableContainers)  as? [String : AnyObject]
    } catch {
        print(error.localizedDescription)
    }
}

转换结果始终为零。我还在 Online JSON Viewer 中检查了 JSON 字符串,字符串是正确的。请帮帮我。

最佳答案

您在电话中明确写下:

as? [String: AnyObject]

换句话说,你要求 Swift 接受任何返回的 JSON,检查它是否是一个带有 String 键的字典,然后要么返回那个字典,要么返回 nil。由于您的数据是数组而不是字典,因此它返回 nil。正是您所要求的,但不是您想要的。

您期望的是字典数组,而不是字典。您还应该使用 Any 而不是 AnyObject。所以转换它使用

as? [[String: Any]]

外层的 [] 表示它是一个数组,内层的 [String: Any] 表示数组中的项目必须是具有 String 键和 Any 值的字典。

为什么要使用 .mutableContainers?如果您有充分的理由可以解释,请使用它。如果您不这样做,只是从某处复制代码,然后将其删除。

关于ios - JSON 到数组的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45381795/

相关文章:

ios - 当我们在 NSUserDefaults 中保存时,从核心数据和应用程序中获取 “<NULL>” 数据会崩溃吗?

ios - 在 iOS 中使用 AFNetworking 下载文件

ios - 如何从 alertview 获取按钮?

JavaScript 错误 : object is not a function in a video poker script

jquery - 带有 AJAX 的 Google Elevation API?

ios - 图像拖放 ios 喜欢 happn 应用程序

带有自定义键的 Javascript array.forEach 不起作用

c - 为什么下面的代码片段分配会产生令人困惑的输出?

javascript - 使用搜索功能访问 json

javascript - 如何使用 jQuery JSON 创建表?