【问题标题】:JSON Serialize EmojiJSON序列化表情符号
【发布时间】:2018-06-09 20:55:09
【问题描述】:

我需要向包含表情符号的服务器发送一条消息。我从 CoreData 读取数据,将其存储在字典中,然后将其转换为 json 格式。

我最初的字典有以下内容

["0": ["chat_token": "8g9nu0Z.a3", "message": "????????", "user_id": "1242", "created": "2017-12-29 17:13:16"]]

然后我使用以下代码将其转换为 JSON

do {
    let jsonData = try JSONSerialization.data(withJSONObject: resultDict, options: [])
    if let jsonText = NSString(data: jsonData, encoding: String.Encoding.ascii.rawValue) {
        return jsonText as String
    }
} catch let error {
    print(error)
}

这会返回我跟随的 json 字符串

{"0":{"chat_token":"8g9nu0Z.a3","message":"ð¤ð","user_id":"34","created":"2017-12-29 17:13:16"}}

问题是表情符号的格式不正确。在 JSON 中,它被转换为 ð¤ð

我需要它的原因是将它发送到服务器以存储消息。如何将表情符号转换为 json 字符串格式。

【问题讨论】:

  • 我认为编码不正确...

标签: json swift unicode emoji


【解决方案1】:

问题是您尝试使用 ASCII 编码初始化 String,其中不存在表情符号。您应该使用 UTF-8。

您也不应该使用NSString,因为无论如何您都返回了String,并且没有使用任何NSString 特定功能。

do {
    let jsonData = try JSONSerialization.data(withJSONObject: resultDict)
    if let jsonText = String(data: jsonData, encoding: .utf8) {
        return jsonText
    }
} catch let error {
    print(error)
}

输出:

"{"0":{"chat_token":"8g9nu0Z.a3","message":"??","user_id":"1242","created":"2017-12-29 17:13:16"}}"

【讨论】:

  • 我在发布问题后很快意识到。并感谢有关字符串的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2014-08-13
  • 2023-02-23
  • 1970-01-01
相关资源
最近更新 更多