当前位置:   GIT > 正文

如何在C#中的json中反序列化表情符号

c#,json,json.net,emoji,facebook,git,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我有一个包含表情符号的json文件,当我想反序列化它时,它无法将表情符号反序列化为字符串.我的代码是:

var mystring ={"message":"jjasdajdasjdj laslla aasdasd ssdfdsf!!! \u{1F3FD}", "updated_time":"2015-04-14T22:37:13+0000", "id":"145193995506_148030368559"}

FaceBookIdea ideaDetails = JsonConvert.DeserializeObject((mystring).ToString());

错误是:

{"Input string was not in a correct format."}

当我删除表情符号时它运作良好.

非常感谢你的帮助



1> dbc..:

您的问题是您的消息字符串的这一部分不符合JSON标准:

"\u{1F3FD}"

根据标准,\u four-hex-digits表示由其代码点的十六进制值给出的unicode字符文字.\u{1F3FD}带有花括号的字符串不符合此约定,因此Json.NET在尝试解析时会抛出异常.如果将JSON上传到https://jsonformatter.curiousconcept.com/,您将看到类似的错误.

因此,似乎要修复您的JSON以使其符合标准,您需要\uXXXX使用适当的4个十六进制数字格式化您的角色.但是,您的字符U+1F3FD大于0xFFFF,并且在Unicode Basic Multilingual Plane上不存在.它不能表示为单个4位十六进制数字.c#(和一般的utf-16)表示诸如代理对之类的Unicode字符- 两个双字节字符对.你需要在这里做同样的事情.你的角色的UTF-16(十六进制)表示是

0xD83C 0xDFFD 

因此,您的JSON角色必须是:

\uD83C\uDFFD

而对于你的整个字符串:

{"message":"jjasdajdasjdj laslla aasdasd ssdfdsf!!! \uD83C\uDFFD", "updated_time":"2015-04-14T22:37:13+0000", "id":"145193995506_148030368559"}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/GIT/detail/12658
推荐阅读
相关标签
  

闽ICP备14008679号