【问题标题】:Asp.Net Web API List model is returning List<List>>Asp.Net Web API List 模型返回 List<List>>
【发布时间】:2021-10-21 14:13:27
【问题描述】:

我通过 ajax 调用调用第三方 API 并使用 Model 对象返回数据。

public class AddressModel
{
     public List<Address> address {get; set;}
     public List<Component> components {get; set;}
}

public class Address
{
    public string address1 { get; set;}
    public string address2 { get; set;}
    public string postalCode { get; set;}
}

API 控制器:

[HttpGet]
public IHttpActionResult GetAddress(string id)
{
     ** code **
     var addr = _service.GetAddressById(id);
     return Ok(addr);
}

public AddressModel GetAddressById(string id)
{
    ** code **

    HttpResponseMessage response = client.GetAsync(uri).Result;
    return response.Content.ReadAsAsync<AddressModel>().Result;
}

但我得到的 Json 数据如下:

"address" : [
    {
        "address1: "Via Benedetto",
        "address2: null,
        "postalCode": null
    },
    {
        "address1": null,
        "address2": "Viadanna",
        "postalCode": null
    },
    {
        "address1": null,
        "address2": null,
        "postalCode": "01234"
    }
 ]

它正在返回一个列表列表。它应该只返回一个列表

我期待这个:

"address" : [ 
    { 
       "address1: "Via Benedetto", 
       "address2": "Viadanna", 
       "postalCode": "01234" 
    } 
]

【问题讨论】:

  • 那个json只是一维数组或者列表。那么这里的问题是什么?这根本不是嵌套数组。
  • 我期待这个结果:"address" : [ { "address1: "Via Benedetto", "address2": "Viadanna", "postalCode": "01234" }, ]
  • 这就是您发布的内容,那么,实际问题是什么?
  • 如果您收到 不同的 json,请在您的问题中发布。
  • 请确保您要返回“地址”类型的对象,而不是“地址模型”。您的 api 正在返回 AdressModel 并且您共享的 json 考虑到返回类型是正确的。

标签: c# json asp.net-web-api postman


【解决方案1】:

试试这个(使用 Newtonsoft.Json)

if (response.IsSuccessStatusCode)
{
var stringData =  response.Content.ReadAsStringAsync().Result;
return JsonConvert.DeserializeObject<AddressModel>(stringData);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多