【问题标题】:NSJSONSerialization converting NSDictionary to HexadecimalNSJSONSerialization 将 NSDictionary 转换为十六进制
【发布时间】:2016-11-10 19:34:36
【问题描述】:

我正在尝试使用 NSJSONSerialization.dataWithJSONObeject 函数将 NSDictionary 转换为 JSON

代码:

do{
    let jsonData = try NSJSONSerialization.dataWithJSONObject(SerializationHelper.toDictionary(user), options: NSJSONWritingOptions.PrettyPrinted )

    print(jsonData)
    } catch {

        print(error)
    }

除了 jsonData 以十六进制打印之外,一切都很好?

<7b0a2020 22706173 73776f72 6422203a 20227465 7374222c 0a202022 75736572 6e616d65 22203a20 22546573 74220a7d>

当这个十六进制字符串转换为二进制时,它实际上等于 JSON 对象,但显然我需要立即使用 JSON 对象。

任何想法为什么会这样?

【问题讨论】:

  • 如您所说,该数据是 JSON 编码。为了将其视为字符串,您需要通过String(data:jsonData, encoding: .utf8) 将数据转换为字符串,但如果您要通过网络发送 JSON,大多数框架只需要数据

标签: ios swift hex nsjsonserialization


【解决方案1】:

您离解决方案只有一步之遥:

斯威夫特 3:

let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)
let jsonString = String(data: jsonData, encoding: .ascii)
print("json string = \(jsonString!)")

斯威夫特 2:

let jsonData = try NSJSONSerialization.dataWithJSONObject(dictionary, options: .PrettyPrinted )
let jsonString = String(data: jsonData, encoding: NSASCIIStringEncoding)
print("json string = \(jsonString!)")

两个例子都应该用 do-catch 包装

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2015-11-11
    • 2013-07-20
    相关资源
    最近更新 更多