【发布时间】:2019-09-30 09:56:29
【问题描述】:
我想将 blob 反序列化为自定义对象。
我从blob得到byte[],转换为string,然后使用JSON.Net反序列化为object。
public object FromByteArray(Type type, byte[] value)
{
return JsonConvert.DeserializeObject(Encoding.UTF8.GetString(value), type);
}
但有时在某个属性中会出现带有特殊符号的 blob。
"LogoUrl":"�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u00002\u0000\u0000\u00002\b\u0003\u0000\u0000\u0000)�x�\u0000\u0000\u0001,PLTE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8�\u0000\u0000\u0001�IDATx^�e��0\u0010��i\u000b�����������%ò�!o�����>\t�ӜC��R�8\"R��I>2;5���+����\u0012=�(\u0010�ݱ�EDi\u0012C��\u0003����(\u001a�\u001a��_)\"�vTZ)���z`d\n��\u0010�qO�8�`\\&��ao�U��s\u0012�d\f�0�\u0018�\ty��(L�(���͞\u001c�\u0006[X���1*>a85�\u001d��T�u\u0000��n���0�F�����!xTZT\rU��\t���5��jxM�,�$\u001aۨ���\u0016U�%�*����\u0015�\u0000��7T\u0014�Y\u001a��\u000e���a�\u001c��)�oGB���\u0019ξ�(�c4|&�%�V��g\t��\u0004�4]�\f6ض��\"Fp!jYt�$d�?�ȥ9�pIi�Gh�aE[��;0����Q,C�?\u0003~\u000b,��,��?�J���M[��Nm\u0011�Ky\f��h�c�=D�D%\u0002���>��\"\tow!\u0004S���?��\u0006rI\u0003\u0011n��J�T��#����D�@\u0001��+�' �L\u0012F\u0003\u0004\tA�\u0007r�\bw&cm�\u0001�b\u001f��qi\u0000\u0000\u0000\u0000IEND�B`�"
据我所知,默认情况下它不能反序列化。我尝试使用选项StringEscapeHandling.EscapeNonAscii 添加JsonSerializerSettings,但这无助于解决此问题。
有没有其他办法解决?
还尝试了第二次反序列化字符串,这有助于获取对象,但似乎不是正确的方法。
【问题讨论】:
-
我们需要查看 JSON 是如何被序列化的,或者至少是
byte []数组的原始内容,以帮助您。
标签: c# .net json json.net deserialization