zoukankan      html  css  js  c++  java
  • 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.

        如果您觉得本文对您有帮助,欢迎“收藏”,欢迎 “推荐”!如有不合理之处,欢迎指出。欢迎转载,转载请注明出处。(/:微笑)

  • 相关阅读:
    去除 SQL Server 查询结果中的两边空格
    Ubuntu 中安装 Oracle 10g
    不同格式的下拉列表框
    闲来无趣,写了个简单的JavaScript验证码
    Ubuntu 任务前后台调度管理
    C#数据类型转换,Convert
    OleDbType,C#,access 对应数据类型,互相对应
    SQL 将查询出的表当做 value 插入到表中
    asp.net mvc && asp.net 页面跳转
    asp.net mvc 与 asp.net结合(asp.net mvc 技巧)
  • 原文地址:https://www.cnblogs.com/skyheaving/p/13294569.html
Copyright © 2011-2022 走看看