带有数组值的swift json字符串转换为[UInt8]

Posted

技术标签:

【中文标题】带有数组值的swift json字符串转换为[UInt8]【英文标题】:swift json string with array value convert to [UInt8] 【发布时间】:2015-12-15 10:12:39 【问题描述】:

我有一个 json 字符串:

let msg=\"type\":\"PONG\",\"content\":[52,55,49,56,51,54,56,56,55,46,57,52,54,55,57,50]

我使用以下代码进行解析:

let receiveMsg = try NSJSONSerialization.JSONObjectWithData(NSString(string: msg!).dataUsingEncoding(NSUTF8StringEncoding)!, options: NSJSONReadingOptions.MutableContainers) as! NSMutableDictionary

然后我可以通过以下方式获取类型:

let type = receiveMsg["type"]?.stringValue

我想尝试同样的方法来获取数组值:

let content=receiveMsg["content"] as? [UInt8]

但不幸的是它失败了。

【问题讨论】:

NSJSONSerialization ≠ SwiftyJSON 它是如何失败的?您是否收到异常、错误、警告 - 控制台上打印的任何内容? 【参考方案1】:

content的值是Int的数组。

您可以使用map 函数将其转换为[UInt8]

let content = receiveMsg["content"] as! [Int]
let contentUInt8 = content.mapUInt8($0)

【讨论】:

这是完美的,但我的数组也可能包含负值......所以在负值时它会给我错误......知道我该如何解决这个问题 第一行从字典中提取一个Int 数组。只需省略第二行。 但我需要第二行对话,因为我需要 UInt8 数组。有什么方法可以将负 int 转换为 UInt8? 这取决于有符号和无符号值之间是否存在关系。要查看有符号和无符号十六进制 0xFF 之间的区别,UInt8 为 255,Int8 为 -1。

以上是关于带有数组值的swift json字符串转换为[UInt8]的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何将带有 Alamofilre 或 SwiftyJSON 的 JSON 字符串转换为 ObjectMapper?

将 Swift 3 数组转换为 JSON

如何在没有可选值的情况下将字典数组快速转换为json字符串[重复]

无法使用 Swift 2 将空数组转换为 JSON

如何将带有对象数组的 json 字符串转换为带有 nsdictionaries 的 nsarray - IOS

将 Swift 字符串数组转换为 const char * const *