我有.net核心应用程序,其中通过HTTPClient调用API。
JSON格式的API的响应如下:
{
"ID": 25,
"Customer": "CustomerName",
"total": 100,
"details": [
{
"ItemId": "Item1",
"ItemName": "Name1",
"Price": "10"
},
{
"ItemId": "Item2",
"ItemName": "Name2",
"Price": "50"
},
{
"ItemId": "Item3",
"ItemName": "Name3",
"Price": "40"
}
]
}我从-- > var response = client.GetAsync(ApiPath).Result;收到了这个回复
现在,在响应变量中,我只需要详细信息,如:
{
{
"ItemId": "Item1",
"Price": "10"
},
{
"ItemId": "Item2",
"Price": "50"
},
{
"ItemId": "Item3",
"Price": "40"
}
}我有这样的DTO课程:
public class ItemDetails
{
public string ItemId { get; set; }
public string Price { get; set; }
}有人能帮助根据DTO类从主变量"response“中提取细节吗?
非常感谢!
发布于 2021-05-10 08:39:06
如果您使用的是新闻软片,请试一试
var token = JObject.Parse(response);//load
var detailsToken = token.SelectToken("details");//select
var itemDetails = detailsToken.ToObject<ItemDetails[]>(); //cast to array只有ItemDetails上存在的属性才会被映射
发布于 2021-05-10 08:40:22
您可以将响应反序列化为一个对象,并从中获取您喜欢的任何内容。
在.net-core中使用内置JSON库,如下所示
using System.Text.Json;
using System.Text.Json.Serialization;然后创建一个响应类,以包含响应值。
public class ResponseObject
{
public int ID { get; set; }
public string Customer { get; set; }
[JsonPropertyName("total")]
public int Total { get; set; }
[JsonPropertyName("details")]
public ItemDetails[] Details { get; set; }
}
public class ItemDetails
{
public string ItemId { get; set; }
public string ItemName { get; set; }
public string Price { get; set; }
}最后,反序列化并提取您喜欢的任何内容,如下所示
var o = JsonSerializer.Deserialize<ResponseObject>(response);
ItemDetails[] itemDetails= o.Details;https://stackoverflow.com/questions/67466545
复制相似问题