【发布时间】:2018-06-29 08:26:55
【问题描述】:
我正在尝试与 C# wcf 服务进行通信,该服务将 josn 作为输入,其中 json 包含图像数据,我编写了 C# 客户端,我在其中将包含图像的对象 (InputData) 作为字节 [] 转换为 json 并将其发送到服务器。
Client side:
InputData RequestData; //copied image data into RequestData obj
String jsonRequest = (new JavaScriptSerializer()).Serialize(RequestData); //converting obj to json
where :
public class InputData
{
private byte[] RawImage = null;
public byte[] FrontImage
{
get return this.FrontRawImage;
set if (null != value) { FrontRawImage = value.ToArray(); }
}
}
Server side:
//deserialize and get the object
InputData requestData = JsonConvert.DeserializeObject<InputData>(jsonData);
我可以使用 C# 客户端执行此操作,但问题是,我必须从 C++ 客户端通信此 WCF 服务,我将图像(jpg)数据转换为字符串**(utf-8)**,然后创建json 并将其发送到服务但在服务器端我无法将此 json 反序列化为 InputData 对象(返回 null 并带有异常意外字符)。
//我在服务器端收到一个异常,提示“请求的数据中有意外字符” InputData requestData = JsonConvert.DeserializeObject(jsonData);
我在服务器端调试 => 来自 c# 客户端的 json 请求数据看起来像
"{\"Image\":[92,34,92,34,36,73, 56.......这里有大量的图像数据]}"
其中 [92,34,92,34,36,73, 56.......这里是巨大的图像数据] 是 json 中的实际图像数据。
但是当我从 c++ 发送相同的请求数据时,它看起来像
"{\"图像\": ÉGÉìÉRÅ[ÉfÉBÉ.........数据}"
所以在这里我在使用
反序列化 json 数据时遇到错误InputData requestData = JsonConvert.DeserializeObject<InputData>(jsonData);
当请求来自 c++ 时,为什么我无法将数据反序列化回对象?
您能否告诉我一种将图像数据作为字符串发送到 C++ 中的 wcf 服务的方法,该服务可以成功地将数据反序列化回对象。
有没有一种方法可以在 C++ 中将我的图像数据转换为 [92,34,92,34,........] 这样服务器可以正确反序列化数据(我可能是错误)。
提前致谢。
【问题讨论】:
标签: c++ string wcf utf-8 json-deserialization