C# 從Json中獲取byte[] 二進制數據


   今天要調整一個項目接口,需要將原始的webservice 接口升級為webapi接口,原始接口中有byte[] 二進制數組參數,初看這個任務,簡直小菜一碟。不就升級一下接口嘛!

  太尷尬了,處理之后模擬測試,失敗了。。。。

  步入正題:

    1、考慮WebApi 接收方便,定義數據格式使用json,但是json內部的二進制對象無法正常獲取,

      var objModel=JsonConvert.DeserializeObject<JObject>(objRequest.ToString());

      var sBytes=(byte[])objModel["sByte"];  //...Error!

    2、如何獲取json中的二進制對象呢?

      在拼接/轉換json數據前,對二進制數組做個轉換,轉換為base64編碼的字符串,然后再webapi中接收后,再對經過base64編碼的字符串進行解碼。二進制數組就獲取到了。  

    

//調用接口前處理:
var sFilePath="C://test.docx";
var bytes=File.ReadAllBytes(sFilePath);
string base64Str=Convert.ToBase64String(bytes);
string submitStr=JsonConvert.SerializeObject(
  new {       ID=Guid.NewGuid().ToString(),       byteStr=base64Str     }
);
//服務(接口)端接收 public string OperateAdv(dynamic objRequest) //HttpPost var objModel=JsonConvert.DescrializeObject<JObject>(objRequest.ToString()); var sBytes=objModel["byteStr"];//獲取json中的二進制 字符串(dynmaic 類型) byte[] tBytes=Convert.FromBase64String(sBytes.ToString());//對解析后的二進制字符串進行base64 解碼

    換個方式進行處理,就能夠得到想要的結果!哈哈哈。先記錄一下,如果大家有其他方式處理,歡迎提示。

    轉換方式參考:https://www.cnblogs.com/WarBlog/p/10594900.html   編碼處理json字符串中byte.

    如果您覺得本文對您有幫助,歡迎“收藏”,歡迎 “推薦”!如有不合理之處,歡迎指出。歡迎轉載,轉載請注明出處。(/:微笑)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM