当前位置: 首页 > news >正文

安顺网站建设公司wordpress模版侵权

安顺网站建设公司,wordpress模版侵权,深圳一元购网站设计公司,网站后台申请邮箱问题#xff1a;如何使用HTTP读取大型JSON数据#xff1f;在工作中我们经常需要调用api获取数据#xff0c;这些数据大多数情况下都小型的#xff0c;比如分页获取数据等。通常不使用HTTP方式传输大型数据。然而再最近的一工作中#xff0c;需要调用[Salesforce] 的api传输… 问题如何使用HTTP读取大型JSON数据在工作中我们经常需要调用api获取数据这些数据大多数情况下都小型的比如分页获取数据等。通常不使用HTTP方式传输大型数据。然而再最近的一工作中需要调用[Salesforce] 的api传输数据经过测试发现这个api返回巨量数据大约50k一次性存储和反序列化这没多的JSON数据是不可可能的。方法1使用传统一次性读并反序列化。所以最快能想到的方法是使用api提供的filter条件减少每次加载的数据大小然后分批加载他们。示例代码如下(为了演示代码做了简化)public class Main {public async void Main(){string yearFY22; //按年度string accountIds 123,124; //按客户Idvar data await LoadApiData()JavaScriptSerializer serializer new JavaScriptSerializer();serializer.DeserializeObject(data);//这是一个老式的方法新方法使用String.Text.Json)仅用于演示目的。这个反序列化过程如果返回的JSON数据特别大会超过长度限制而报错同时占用内存非常高。}public async Taskstring LoadApiData(string year,string accountIds){string apiUrl http://salesforce/api?Year{year}accountId{accountIds};HttpClient client new HttpClient();string jsonResponse await client.GetStringAsync(apiUrl)return jason} }但最后发现数据量依然很大这种方法再Javascript反序列化时候会导致超过最大长度限制内存占用大最终导致运行失败。后来尝试使用更更多的filter去减少返回的数据量但发现如果这样写太多的参数导致程序的可维护性会变差同时你也不能保证返回的数据量是否依然超过限制。经过研究Salesforce的api发现他们使用了HTTP协议中的流式传输以分块传输的大型Json数据。返回的HTTP头部包含Transfer-Encodingchunk。这样一来我们也可以使用HttpClient的流式处理方式来处理返回的数据了避免了之前的问题内存占用量也会大大减少。方法2使用流式分块读取//该方法使用了C# 8.0的   IAsyncEnumerable 异步流接口后面有机会再跟大家解释这个强大的功能。 //这里的作用就是为了异步返回流式读取到的JSON数据。 public async IAsyncEnumerablestring LoadApiData(string year,string accountIds){string apiUrl http://salesforce/api?Year{year}accountId{accountIds};HttpClient client new HttpClient();string jsonResponse await client.GetStreamAsync(apiUrl); //获取响应流该方法会很快返回。因为HTTP一旦准备好头部就会返回不会等待所有数据完成后在返回。var reader new StreamReader(jsonResponse);var jr new JsonTextReader(reader); //Newtonsoft JSON读取器它解决了JSON数组流式返回需要分析json格式的问题。while(jr.Read()){var item serializer.DeserializeDataModel(jr);yield return item;}}//再main方法使用这个异步流返回的结果 public async void Main() {string yearFY22; //按年度string accountIds 123,124; //按客户Idawait foreach(var item in LoadApiData(year,accountIds)){//处理item。} }总结我们通常只认为HTTP之传输少量的数据但是HTTP 1.1规范中定了可以使用Transfer-Encodingchunk的方式分块传输大量数据。所以再需要传输大量数据的情况下尤其是做上下游系统数据集成分析类应用时可以使用HTTP流式传输并流式加载和处理他们。好处是占用内存资源大大减少并可以处理大量数据传输。
http://www.pierceye.com/news/8525/

相关文章:

  • 简述网站开发的三层架构夸克浏览器怎么打开黄
  • 专注与开发网站的北京网络公司品牌设计公司排名前十强
  • 郑州网站建设yipinpai海口网站建设好
  • 织梦做信息分类网站网站上传的工具
  • 外贸开发网站公司国产做爰全免费的视频网站
  • 济宁网站建设 企诺外国老头做中文网站
  • php可以做网站布局吗wordpress最新评论样式
  • 摄影摄像网站建设跨境电商的前景及现状
  • 为自家企业做网站做网站的公司怎么拓展业务
  • 中关村网站建设免费的wordpress采集
  • 重庆网站提示少儿编程加盟店电话
  • 网站不收录怎么解决深圳品牌做网站公司有哪些
  • 网站的系统建设方式国外外链平台
  • 个人备案网站盈利短链接生成器app
  • 免费制作二维码网站宁波市住房和城乡建设部网站
  • 做外贸网站怎么设计可以做兼职的网站有哪些
  • 河南省和城乡建设厅网站门户网站模板下载
  • 南昌企业网站设计公司网站平台怎么做的好
  • 网站域名能迁移吗网站做管理后台需要知道什么
  • 重庆最大的本地交流网站天津百度关键词推广公司
  • 备案后网站打不开舆情监测关键词
  • 网站的icp备案信息是什么建设服装网站
  • 网站建设免费学习网站建设防火墙级别要求
  • 网站搜索排优化怎么做wordpress修复
  • 建设医院网站服务wordpress 中文 模板下载
  • 网站空间域名是什么中国互联网协会官网
  • 济南网站定制音乐模板wordpress
  • 做公司网站要素域名服务器的主要功能是
  • 网站开发建站教程详解服装行业做推广网站
  • 电商网站 cms怎么把svg做网站背景