将 API 中的 JSON 数据解析并过滤到 C# 应用程序中

Parsing & Filtering JSON data from API into C# application

我的目标是从 "The virus tracker" API 检索 JSON 数据并将其解析为标签。这是我的 IB 个人项目,所以我刚开始学习 c#。找到这个旧代码并尝试修复它,它适用于基本的 GET API,但它不适用于我正在使用的代码。 (英语不是我的主要语言)

邮递员回复

{
   "results": [
      {
         "total_cases": 5954607,
         "total_recovered": 2622507,
         "total_unresolved": 2255875,
         "total_deaths": 363208,
         "total_new_cases_today": 53700,
         "total_new_deaths_today": 1659,
         "total_active_cases": 45257,
         "total_serious_cases": 2698001,
         "total_affected_countries": 213,
         "source": {
            "url": "https://thevirustracker.com/"
         }
      }
   ],
   "stat": "ok"
}

C# 代码

//Creating Client connection 
        RestClient restClient = new RestClient("https://thevirustracker.com/free-api?global=stats");


        //Creating request to get data from server
        RestRequest restRequest = new RestRequest("total_cases", Method.GET);


        // Executing request to server and checking server response to the it
        IRestResponse restResponse = restClient.Execute(restRequest);


        // Extracting output data from received response
        string response = restResponse.Content;

        // Parsing JSON content into element-node JObject
        var jObject = JObject.Parse(restResponse.Content);

        //Extracting Node element using Getvalue method
        string cases = jObject.GetValue("total_cases").ToString();
        label1.Text = (cases);

错误

An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' occurred in Newtonsoft.Json.dll
Unexpected character encountered while parsing value: <. Path '', line 0, position 0.

我使用此代码的最终目标是 label1 显示“5954607”

请记住,我对此很陌生,所以如果您能解释一下您对代码所做的更改,我将不胜感激。

您没有正确使用 RestRequest 或错误地初始化了 RestClient。

如果您在 RestClient 中使用的 url 是整个 url 那么您不需要在 RestRequest 中使用 "resource"。

由于这个错误,您得到了 HTML 错误指示的响应

Unexpected character encountered while parsing value: <. Path '', line 0, position 0.

restResponse.Content 的值可能以 <html 开头,那是无效的 JSON。

Json 有效载荷比您编码的要复杂一些。结果对象包含一个数组,其中包含一个包含您的统计数据的对象 属性.

将这些修复放在一起就得到了这段代码。

RestClient restClient = new RestClient("https://thevirustracker.com/free-api?global=stats");

//Creating request to get data from server
RestRequest restRequest = new RestRequest(null, DataFormat.Json);

// Executing request to server and checking server response to the it
IRestResponse restResponse = restClient.Execute(restRequest);

// Extracting output data from received response
string response = restResponse.Content;

// Parsing JSON content into element-node JObject
var jObject = JObject.Parse(restResponse.Content);

//Extracting 
// the object has a results property 
// that is an array with one item (zero-based)
// on index 0 there is an object
// that has a property total_cases
string cases = (string) jObject["results"][0]["total_cases"];
label1.Text = (cases);