首页 > 解决方案 > 如何在 C# 中访问 Json(这是 HttpMessage 的结果)?

问题描述

我正在 .NET 中编写两个应用程序(Web API)。从应用程序 AI 想要使用 Http 请求调用应用程序 B 的控制器中的方法。这里

 using (var askPensionerDetails = new HttpClient())
            {
                double pensionToDisburse = 0;
                askPensionerDetails.BaseAddress = new Uri("http://localhost:55345/api/pensionerdetails/");
                var responseTask = askPensionerDetails.GetAsync("getById?pan=" + inputOfPensioner.PAN);
                responseTask.Wait();
                var result =responseTask.Result ;
                if (result.IsSuccessStatusCode)
                {
                     var readTask = result.Content.ReadFromJsonAsync<object>();
                     readTask.Wait();
                     return Ok(readTask.Result);
                }
            }

邮递员的输出是

{
    "name": "bunk seenu",
    "dateOfBirth": "1990-01-02T00:00:00",
    "pan": "ABCD12351E",
    "salaryEarned": 45000,
    "allowances": 500,
    "pensionType": 1,
    "bankDetails": {
        "bankName": "SBI",
        "accountNumber": "SBI00001BS",
        "bankType": 0
    }
}

那是一个理想的输出。但问题是如何访问诸如银行详细信息、姓名、潘、薪水等属性。

我曾尝试使用 readTask.Result["name"] 但它抛出错误。

我也尝试过使用result.Content.ReadAsStringASync(); 但是邮递员的输出是

{
    "name": [],
    "dateOfBirth": [],
    "pan": [],
    "salaryEarned": [],
    "allowances": [],
    "pensionType": [],
    "bankDetails": [
        [
            []
        ],
        [
            []
        ],
        [
            []
        ]
    ]
}

对于语句 readTask = result.Content.ReadFromJsonAsync();,我没有与 Json 的结果类型关联的类;(根据设计约束)。

标签: c#json.netstringjson.net

解决方案


您可以使用 Newtonsoft.Json

JObject jo = JObject.Parse(readTask.Result);
var name = jo["name"];
if(string.IsNnullOrEmpty(name)){
///some code 
}

推荐阅读