如何从 HTTPClient 中提取嵌套对象

问题描述 投票:0回答:1

在我的 Jquery 中,

getcustomHeaders函数返回

{
    "customHeaders": {
        "customId": "26",
        "screenData": "width=1920&height=1080&scaling-factor=1&colour-depth=24",
        "screenSize": "width=1920&height=1080",
    }
}

另一个功能可以,

$.ajax({
          url: 'someName/Submit?productId=' + productId,
          type: 'post',
          headers: getcustomHeaders()
        })
        .success(function(d) {
          if (d && d.responseJSON && d.responseJSON.Message) { alert(d.responseJSON.Message); }
        })
        .error(function(d) {
          if (d && d.responseJSON && d.responseJSON.Message) {
            alert(d.responseJSON.Message);
          } else {
            alert(display_some_error_message);
          }
        });

在.Net中,

var request = HttpContext.Current.Request;
request.Headers["customHeaders"];

-- 返回当前对象,但无法访问该对象中的值。

我试过了,

request.Headers["customHeaders"]["customId"] -- NameValueCollection doesn't contain a definition for 'customHeaders'
request.Headers["customHeaders"].GetValues("customId").FirstOrDefault() -- 'string' does not contain a definition for 'GetValues'

有人可以告诉我如何获取“customId”的值吗?

c# asp.net dotnet-httpclient
1个回答
0
投票

既然你这么说

在.Net中,

var request = HttpContext.Current.Request;

request.Headers["customHeaders"];

-- Returns the current object, but cannot access the values from the object.

我认为您需要将 customHeaders json 反序列化为 .Net 中的等效自定义对象,然后访问该属性。

public class CustomHeaders
{
    public int CustomId {get;set;}
    public string ScreenData {get;set;}
    public string ScreenSize {get;set;}
}

然后在你的

var customHeadersObj = JsonSerializer.Deserialize<CustomHeaders>(HttpContext.Request.Headers["CustomHeaders"])

一旦执行此操作,您将能够像这样访问属性:

customHeadersObj.CustomId

注意:如果您没有使用带有大小写的确切名称,请确保将 Jsonproperty 属性添加到属性中,例如 Ajax 调用中的“customId”与 .Net 中的“CustomId”

© www.soinside.com 2019 - 2024. All rights reserved.