带有数组值的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?
如何在没有可选值的情况下将字典数组快速转换为json字符串[重复]