当前位置: 首页 > 编程笔记 >

Swift中字典与JSON转换的方法

慕麒
2023-03-14
本文向大家介绍Swift中字典与JSON转换的方法,包括了Swift中字典与JSON转换的方法的使用技巧和注意事项,需要的朋友参考一下

Swift中经常会遇到字典和字符串的相互转换,因此可以转换可以封装起来,转换代码如下:

func convertStringToDictionary(text: String) -> [String:AnyObject]? {
  if let data = text.data(using: String.Encoding.utf8) {
    do {
      return try JSONSerialization.jsonObject(with: data, options: [JSONSerialization.ReadingOptions.init(rawValue: 0)]) as? [String:AnyObject]
    } catch let error as NSError {
      print(error)
    }
  }
  return nil
}


func convertDictionaryToString(dict:[String:AnyObject]) -> String {
  var result:String = ""
  do {
    //如果设置options为JSONSerialization.WritingOptions.prettyPrinted,则打印格式更好阅读
    let jsonData = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions.init(rawValue: 0))

    if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {
      result = JSONString
    }

  } catch {
    result = ""
  }
  return result
}

func convertArrayToString(arr:[AnyObject]) -> String {
  var result:String = ""
  do {
    let jsonData = try JSONSerialization.data(withJSONObject: arr, options: JSONSerialization.WritingOptions.init(rawValue: 0))

    if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {
      result = JSONString
    }

  } catch {
    result = ""
  }
  return result
}

实际测试:

 

  let jsonText:String = "{\"order_info\":[{\"order_id\":\"1479828084819597144\",\"channel\":\"ios\",\"product_id\":\"02\"},{\"order_id\":\"1479828084819597144\",\"channel\":\"ios\",\"product_id\":\"02\"}]}"

  let dict = self.convertStringToDictionary(text: jsonText)
  print("字符串转换之后的字典:\(dict!)")


  var dictionaryOrArray : [String: AnyObject] = [:]
  dictionaryOrArray["a\"b"] = "cd" as AnyObject?
  dictionaryOrArray["strings"] = ["string", "another"] as AnyObject?
  dictionaryOrArray["keywdict"] = [ "anotherKey": 100, "Key2": "Val2"] as AnyObject?
  dictionaryOrArray["numbers"] = [ 1, 2, 3] as AnyObject?
  dictionaryOrArray["bools"] = [ true, false] as AnyObject?
  let convertResult:String = self.convertDictionaryToString(dict: dictionaryOrArray)
  print("字典转换之后的字符串:\(convertResult)")


  let array:[String] = ["FlyElephant","keso"]
  print("数组转换之后的数组:\(self.convertArrayToString(arr: array as [AnyObject]))")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我无法访问JSON中的数据。我究竟做错了什么? 问题答案: 将字典转换为对象,而不是对象!因此,您必须使用方法将其加载到 请参阅作为保存方法和检索方法。 这是代码示例,可以帮助您进一步了解它:

  • 我无法访问JSON中的数据。我做错了什么?

  • 问题内容: 我一直在寻找有关此问题的答案,但似乎无法找到答案。也许到了傍晚才找出答案,所以我转向这里的优秀读者。 我从CouchDB记录中提取了以下JSON数据: 此数据存储在Python字典中,该字典位于称为“ ” 的字典中键“ ” 下。我想将此数据从CouchDB转换为Python dict,以便可以在Django模板中执行以下操作: 我发现了很多有关将字典转换为JSON的信息,但是没有其他方

  • 问题内容: 我正在尝试将(Swift字典)转换为,以供以后在产生字符串的JSON库上使用 但不起作用 所有这些示例都不起作用。它们产生以下错误: 正确的做法是什么? 更新: 有效的代码 问题答案: 您必须像这样强制转换: 否则,在ex的方法中使用Swift字典和NSDictionary时,其处理方式几乎相同: 将完全正常工作。 更新后 如果将Dictionary值类型更改为非可选的String,则

  • 问题内容: 我一直在寻找将Swift中一个相当简单的JSON字符串转换为对象类型但无济于事的日子。 这是Web服务调用的代码: 我有一个快速的结构Business.swift: 这是我部署的测试服务: 如果有人通过这个指导我会很高兴。 谢谢。 问题答案: 这里有一些技巧,以简单的例子开始。 考虑您具有以下JSON Array String(类似于您的): [编辑] 摆脱null更改为: 另请参阅

  • 本文向大家介绍python中将字典转换成其json字符串,包括了python中将字典转换成其json字符串的使用技巧和注意事项,需要的朋友参考一下 #这是Python中的一个字典 //这是javascript中的一个JSON对象 实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串(不能传递所以需要将其转换成字符串先),Python有一个叫s