如何在 C++ 非托管代码 Json 中反序列化一个字节 [] 的 json 字符串?

Posted

技术标签:

【中文标题】如何在 C++ 非托管代码 Json 中反序列化一个字节 [] 的 json 字符串?【英文标题】:How deserialize a json string of a byte[] in c++ unmanaged code a Json? 【发布时间】:2020-05-24 11:18:15 【问题描述】:

在非托管 C++ 程序中,必须反序列化 tcp 从服务器读取的 json。

服务器端(用 C# 制作):

public class DUMMY

    public byte[] BinaryContent  get; set; 


... inside a http get controller ...
DUMMY d = new DUMMY();
d.BinaryContent = new byte[]  0x00, 0x00 ; // 0x00 is a sample, in real it contains a binary file
string sd = JsonConvert.SerializeObject(d);
return sd;

客户端(用 C++ 制作,非托管)http-get read :

 "BinaryContent" : "AAA=" 

问题是如何反序列化?

如何将 "AAA=" 转换为 0x0000 ?

第二个例子:IF SERVER send 0xFF, 0xFF string received is "ERE=".

【问题讨论】:

我非常怀疑 0xFF, 0xFF 会变成 ERE=。请检查您的第二个示例。 你的权限是 rustyx,0xFF 0xFF 变成 "//8=",值 0x11 0x11 变成 "ERE="。谢谢 【参考方案1】:

这是 Base64 编码。 https://en.wikipedia.org/wiki/Base64

这是一种仅使用 ASCII 字符集即可表示任意字节的方式。

您可能希望找到一个可以解码 Base64 字符串并返回它所代表的字节的库。 (或者也可以自己写那个算法,但我不推荐。)

【讨论】:

谢谢,我找到cpp-base64 in github,我会试试的。

以上是关于如何在 C++ 非托管代码 Json 中反序列化一个字节 [] 的 json 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何从非托管 C++ 代码获取结构化列表值到 C#?

如何在 C# 中反序列化多个 JSON 对象?

在 C++ 中反序列化 cnn_face_detection_model_v1

如何在 C# .NET 中反序列化复杂的 JSON 对象?

如何在 asp.net 中反序列化 Json-Object

当您没有类型时,如何在 .NET 中反序列化 JSON 字符串