Csharp/C#教程:我怎样才能在C#中反序列化json中的表情符号分享


我怎样才能在C#中反序列化json中的表情符号

我有一个包含表情符号的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."} 

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

非常感谢你的帮助

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

 "u{1F3FD}" 

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

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

 0xD83C 0xDFFD 

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

 uD83CuDFFD 

而对于你的整个字符串:

上述就是C#学习教程:我怎样才能在C#中反序列化json中的表情符号分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/996986.html

(0)
上一篇 2021年12月25日 下午9:15
下一篇 2021年12月25日

精彩推荐