首页 > 解决方案 > 如果一个键具有直接从文件读取的数据(不可打印字符),如何反序列化 json 数据

问题描述

 string jsondata =   {  "class": "MFPUTIL",  "method": "MFPUtilBase64Encode",  "args": {    "value": "%PDF-1.4 Sharp Scanned ImagePDF%Sharp Non-Encryption3 0 obj<</Type /Page/Parent 1 0 R/Resources 4 0 R/Contents 5 0 R/MediaBox [0 0 613 790]>>endobj4 0 obj<</ProcSet [/PDF /ImageB]/XObject << /Img1 6 0 R >>>>endobj5 0 obj<</Length 27>>stream613 0 0 790 0 0 cm/Img1 Doendstreamendobj6 0 obj<</Type /XObject/Subtype /Image/Name /Img1/Filter /CCITTFaxDecode/DecodeParms <<  /K -1 /Columns 1704 /Rows 2196 >>/Width 1704/Height 2196/BitsPerComponent 1/ColorSpace /DeviceGray/Length 7 0 R>>stream_�������W]������}�Y���������W��_����������)�����������������������������������������!|�P!E�;!a̝��0�fC@@ h`�gNKb���@����<&�M�au�D<�;D??KDB:D\"*��?�oA�A����}&�6�;�zo����:o����+�'�m'���������W�Q��C#G���*�`C�xDX��PEx����N�F�Π�0\\�j ���=<q[c��\\ xA��a��M�m��\t��/�^�ڽ�A���Z!0������8\"?������Bg���P�`�?�^\"a�o�,6�&gt; ����� l�PA�&amp;��`�A�&gt;�a�?�uG���_���a{ @0�I��dŲ�����I��؞��'݃I�&gt;�u���{�����ޟ����5��a�������0��^���L������=��YIA����8�Z���&quot;  }

上面的代码是字符串数据,如果我们通过下面的代码反序列化就会出错。

System.Text.Json.JsonSerializer.Deserialize<Dictionary<string, object>>(jsondata, null).

如果该字符串具有一个不可打印的值,请提供反序列化 json 的解决方案

标签: c#

解决方案


从 Javascript 或客户端使用以下字符串以字符串形式发送数据:

var jsondataString = JSON.stringify(jsondata);

我认为您可以使用以下方法进行转换:(我的示例)

LoginInfo objLoginInfo;
JsonSerializer serializer = new JsonSerializer();
JsonTextReader reader = new JsonTextReader(new 
System.IO.StringReader(jsondataString.ToString()));
reader.SupportMultipleContent = true;
objLoginInfo = serializer.Deserialize<LoginInfo>(reader);

假设在这里我有类名 LoginInfo 我想转换我的 JSON 对象的类型,否则您可以使用它们的object类型进行转换。


推荐阅读