首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON序列化Emoji

JSON序列化Emoji
EN

Stack Overflow用户
提问于 2017-12-29 19:52:54
回答 1查看 3.2K关注 0票数 0

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

我最初的字典有以下内容

代码语言:javascript
复制
["0": ["chat_token": "8g9nu0Z.a3", "message": "??", "user_id": "1242", "created": "2017-12-29 17:13:16"]]

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

代码语言:javascript
复制
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字符串

代码语言:javascript
复制
{"0":{"chat_token":"8g9nu0Z.a3","message":"ð¤ð","user_id":"34","created":"2017-12-29 17:13:16"}}

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-29 19:58:10

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

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

代码语言:javascript
复制
do {
    let jsonData = try JSONSerialization.data(withJSONObject: resultDict)
    if let jsonText = String(data: jsonData, encoding: .utf8) {
        return jsonText
    }
} catch let error {
    print(error)
}

输出:

代码语言:javascript
复制
"{"0":{"chat_token":"8g9nu0Z.a3","message":"??","user_id":"1242","created":"2017-12-29 17:13:16"}}"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48022216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档