【问题标题】:How to access Json (which was a result of HttpMessage) in C#?如何在 C# 中访问 Json(这是 HttpMessage 的结果)?
【发布时间】:2021-11-16 21:19:30
【问题描述】:

我正在用 .NET 编写两个应用程序(Web API)。从应用程序 A 我想使用 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
    }
}

这是一个理想的输出。但问题是如何访问bankdetails、name、pan、salaryEarned等属性。

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

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

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

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

【问题讨论】:

    标签: c# json .net string json.net


    【解决方案1】:

    来自docs

    如果您有想要反序列化的 JSON,但没有将其反序列化的类,则除了手动创建所需的类之外,您还有其他选择:

    【讨论】:

    • 嘿,效果很好。感谢您的回复:)
    【解决方案2】:

    你可以使用 Newtonsoft.Json

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

    【讨论】:

    猜你喜欢
    • 2013-06-05
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多