【问题标题】:How to convert NSDictionary to NSString which contains json of NSDictionary in Swift?如何在 Swift 中将 NSDictionary 转换为包含 NSDictionary json 的 NSString?
【发布时间】:2015-04-12 22:21:09
【问题描述】:

如何将 NSDictionary 转换为包含 NSDictionary 的 JSON 的 NSString?我试过了,但没有成功

//parameters is NSDictionary

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers , error: &error) as NSDictionary

我想快速将此 NSDictionary Json 转换为 NSString

【问题讨论】:

标签: swift


【解决方案1】:

您可以使用以下代码:

var error: NSError?
var dict: NSDictionary = [
    "1": 1,
    "2": "Two",
    "3": false
]

let data = NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted, error: &error)

if let data = data {
    let json = NSString(data: data, encoding: NSUTF8StringEncoding)
    if let json = json {
        println(json)
    }
}

给定一个NSDictionary,将其序列化为NSData,然后转换为NSString

进行转换的代码也可以更简洁地重写为:

斯威夫特 3:

    do {
        let jsonData = try JSONSerialization.data(withJSONObject: data)
        if let json = String(data: data, encoding: .utf8) {
            print(json)
        }
    } catch {
        print("something went wrong with parsing json")
    }

原答案:

if let data = NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted, error: &error) {
    if let json = NSString(data: data, encoding: NSUTF8StringEncoding) {
        println(json)
    }
}

请注意,为了使序列化工作,字典必须包含有效的 JSON 键和值。

【讨论】:

  • @EyalBenYehuda 您的问题最明显的答案是:试试吧!!您应该通过阅读the documentation 找到任何答案,但答案是肯定的,它适用于嵌套字典和数组
  • 感谢@Antonio,我之前确实尝试过,但没有任何效果。我终于让它工作了(stackoverflow.com/a/41091453/1334575)。感谢您的回答(我在这里看到了一个小的变化:raywenderlich.com/120442/swift-json-tutorial)。谢谢。
  • 感谢上帝,我已经找了一个小时。 NSString 的想法是完美的。
  • 为 Swift 5 更新:JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions.prettyPrinted)
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多