前言

新型冠状病毒的出现,着实让人紧张。我每天一大早都会去查看今天的最新数据,可是每次的数据都挺让人揪心的。今天突然间很想看看过去的历史的数据,结果查了很多资料都不是很全。反正国家让我们待在家里做贡献,那我们也可以多做做研究,偶然的机会发现了一个API可以查到历史数据,于是就用.NET Core 3.1实现了一下。

编码与实现

通过查看返回的数据可以知道,其数据是标准的JSON的格式,这样就减少了更多的工作。返回数据如下图所示:

通过分析其数据结构,可以知道其主要有如下属性:

lastUpdateTime: string,最新更新时间

chinaTotal: object,数据汇总

chinaAdd: object,新增数据汇总

chinaDayList: array,每日历史数据

chinaDayAddList: array,每日新增历史数据

areaTree: array,区域数据(含国内省市及国外数据)

项目详情如下:

最后就是编码实现,如果获取数据,这个也比较简单,使用HttpClient+Newtonsoft.Json即可很快实现,需要注意的是这个接口返回的数据需要二次反序列化。

运行效果如下:

对数据进行格式化展示后输出:

最后将我们需要的数据保存起来,这个就更简单了:

   1:  private static void SaveToFile(nCoVData data)
   2:  {
   3:      if (!File.Exists("data.json"))
   4:      {
   5:          using (FileStream fs = new FileStream("data.json", FileMode.Create, FileAccess.Write))
   6:          {
   7:              using (StreamWriter sw = new StreamWriter(fs))
   8:              {
   9:                  sw.Write(data.Data);
  10:                  sw.Flush();
  11:                  sw.Close();
  12:              }
  13:          }
  14:      }
  15:      else
  16:      {
  17:          using (FileStream fs = new FileStream("data.json", FileMode.Open, FileAccess.Write))
  18:          {
  19:              using (StreamWriter sw = new StreamWriter(fs))
  20:              {
  21:                  sw.Write(data.Data);
  22:                  sw.Flush();
  23:                  sw.Close();
  24:              }
  25:          }
  26:      }
  27:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

完整代码地址:https://github.com/edison0621/2019nCoVData

后续

既然数据有了,其他的也就好办多了,比如各种图形展示。最后武汉加油,中国加油,向白衣天使们致敬,我们一定能度过这道坎。

使用.NET Core优雅获取并展示最新疫情数据的更多相关文章

  1. NET Core开发-获取所有注入(DI)服务

    NET Core开发-获取所有注入(DI)服务 获取ASP.NET Core中所有注入(DI)服务,在ASP.NET Core中加入了Dependency Injection依赖注入. 我们在Cont ...

  2. 将 ASP.NET Core 2.1 升级到最新的长期支持版本ASP.NET Core 3.1

    目录 前言 Microsoft.AspNetCore.Mvc.ViewFeatures.Internal 消失了 升级到 ASP.NET Core 3.1 项目文件(.csproj) Program. ...

  3. .NET Core 反射获取所有控制器及方法上特定标签

    .NET Core 反射获取所有控制器及方法上特定标签 有个需求,就是在. NET Core中,我们想在项目 启动时,获取LinCmsAuthorizeAttribute这个特性标签所有出现的地方,把 ...

  4. Azure KeyVault(三)通过 Microsoft.Azure.KeyVault 类库在 .NET Core 上获取 Secrets

    一,引言 上一篇文章,我们介绍了 Azure Key Vault 在实际项目中的用途,Azure Key Vault 作为密钥管理的服务,我们可以很轻松的利用它创建和控制用于加密的密钥,和管理证书和机 ...

  5. Core Graphices 获取上下文

    Core Graphices 获取上下文的三种方式: 1.自定义view 重写view 的 drawRect:(CGRect)rect方法 - (void)drawRect:(CGRect)rect ...

  6. Python 优雅获取本机 IP 方法【转】

    转自:https://www.cnblogs.com/lfxiao/p/9672975.html 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 ...

  7. 【OData】使用Odata获取数据之后再次获取可能得不到最新的数据问题记录

    工作上遇到个问题是关于系统后台数据库更新了某数据后, 前台界面刷新显示的不是最新的数据.但是大约10分后再次刷新就能显示新的数据,或者重启IIS等web server host. 最开始认为可能是因为 ...

  8. Python 优雅获取本机 IP 方法

    原文 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  9. mongodb查询之从多种分类中获取各分类最新一条记录

    mongodb查询之从多种分类中获取各分类最新一条记录 2017年04月06日 13:02:47 monkey_four 阅读数:6707更多 个人分类: MongoDBJavaScript   文章 ...

随机推荐

  1. 7.13 Python基础语法

    Python基础语法 编码: 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码 python2.7中有两个函数 ...

  2. 跟我一起学QT_QT标准对话框_字体选择框

    标准对话框 QT的标准对话框分为以下几种 颜色对话框 文件对话框 字体对话框 输入对话框 消息对话框 进度对话框 错误信息对话框 向导对话框 字体选择框 字体选择框位于 QFontDialog 类中 ...

  3. ECShop二次开发指南(一)

    ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示.购物流程和强大易用的后台管理.由于 ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2 ...

  4. 【C++】自加、自减(补充)

    // // main.cpp // [记录]自加.自减(补充) // // Created by T.P on 2018/3/7. // Copyright © 2018年 T.P. All righ ...

  5. 1040 有几个PAT (25 分)C语言

    字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T). 现给定字符 ...

  6. Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)

    Eclipse直接运行算法第4版例子(重定向和读取指定路径文件)   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...

  7. springboot2 整合redis

    1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. log日志拦截

    简介 主要记录一下项目中的日志拦截和异常拦截,由于之前公司项目为单体项目,所使用的日志拦截较为简单,只是用拦截器进行前后对日志的拦截,异常拦截直接使用@ExceptionHandler,而现在公司接口 ...

  9. LeetCode 第26题--数组中重复元素

    1. 题目 2.题目分析与思路 3.代码 1. 题目 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2. 你不需要考虑数组中超 ...

  10. java 赋值运算

    注意:在赋值运算的时候,会自动发生数据类型转变 例子 public class test{ public static void main(String[] args){ byte num = 5; ...