【问题标题】:Json deserealization of special symbols特殊符号的Json反序列化
【发布时间】: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,但这无助于解决此问题。

有没有其他办法解决?

还尝试了第二次反序列化字符串,这有助于获取对象,但似乎不是正确的方法。

【问题讨论】:

标签: c# .net json json.net deserialization


【解决方案1】:

将您的编码类型从 UTF8 更改为默认

public object FromByteArray(Type type, byte[] value)
{
    return JsonConvert.DeserializeObject(Encoding.Default.GetString(value), type);
}

【讨论】:

  • 不,没有帮助...只是符号在异常中以另一种方式呈现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多