【问题标题】:swift json string with array value convert to [UInt8]带有数组值的swift json字符串转换为[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
  • 它是如何失败的?您是否收到异常、错误、警告 - 控制台上打印的任何内容?

标签: ios objective-c json swift swifty-json


【解决方案1】:

content的值是Int的数组。

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

let content = receiveMsg["content"] as! [Int]
let contentUInt8 = content.map{UInt8($0)}

【讨论】:

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