首页 > 解决方案 > 反序列化和序列化,保留java转义的表情

问题描述

这是用于处理 facebook webhook。

一个事件字符串像这样到达

{"object":"page","entry":[{"id":"222222222","time":1536713510549,"messaging":[{"sender":{"id":"1111111111"}," recipient":{"id":"355433484576638"},"timestamp":1536713509901,"message":{"mid":"VnOoUhb2FUTyfnkXtmKgqDCfJlgJPB_n1gj-8aC6ka4-Oo2GjMXS82vHH9ChydJrPX_5Zu3sJ6skCv8JToF1IA","seq":206765," text":"Jeg m\ u00e5 裸 si at jeg elsker Obosbladet!St\u00e5 p\u00e5 视频!\ud83d\ude00\ud83d\ude2c\ud83d\ude01\ud83d\ude02\ud83d\ude03\ud83d\ude04" }}]}]}

这是使用反序列化的

Dim TestObj As RealTimeEvent  = JsonConvert.DeserializeObject(Of RealTimeEvent)(eventStr)

此时,如果我在调试器中查看 TestObj 消息,我会看到

“Jeg må bare si at jeg elsker Obosbladet!Stå på videre!”

注意瑞典字符已经被正确处理了,但是java转义的表情不是。(\ud83d\ude00\ud83d\ude2c\ud83d\ude01\ud83d\ude02\ud83d\ude03\ud83d\ude04)

如果我然后尝试反序列化对象

JsonConvert.SerializeObject(TestObj )

我明白了

VnOoUhb2FUTyfnkXtmKgqDCfJlgJPB_n1gj-8aC6ka4-Oo2GjMXS82vHH9ChydJrPX_5Zu3sJ6skCv8JToF1IA"",""seq"":""206765"",""text"": ""Jeg må bare si at jeg elsker Obosbladet!Stå på videre!"" ,""附件"":null}}]}]}

瑞典字符被转换..这是我想要的,但我没有机会处理表情符号

无论如何,我是否保留了 Newtonsoft De 序列化过程不理解的所有内容,但保留了瑞典语和其他字符的转换?

---编辑---添加我想要实现的解释---我需要能够访问表情符号的原始定义.."\ud83d\ude00\ud83d\ude2c\ud83d\ude01\ud83d\ude02 \ud83d\ude03\ud83d\ude04" 我正在集成到另一个根本无法处理表情符号的系统。我编写了一个“翻译器”,它将解析消息文本以查找 java 转义数据。我采用整个表情符号定义(所有对)并减少直到找到匹配的定义。也许有一种方法可以告诉序列化程序不要转换任何转义值并保持消息文本“原始”?(我尝试了各种 JsonSerializerSettings 但没有找到)

标签: serializationjson.netdeserialization

解决方案


推荐阅读