首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何只提取JSON的一部分并在.netcore中反序列化

如何只提取JSON的一部分并在.netcore中反序列化
EN

Stack Overflow用户
提问于 2021-05-10 07:39:05
回答 2查看 130关注 0票数 0

我有.net核心应用程序,其中通过HTTPClient调用API。

JSON格式的API的响应如下:

代码语言:javascript
运行
复制
{
    "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;收到了这个回复

现在,在响应变量中,我只需要详细信息,如:

代码语言:javascript
运行
复制
{   
        {
            "ItemId": "Item1",            
            "Price": "10"           
        },
        {
           "ItemId": "Item2",           
            "Price": "50"  
        },
        {
            "ItemId": "Item3",            
            "Price": "40"  
        }    
}

我有这样的DTO课程:

代码语言:javascript
运行
复制
 public class ItemDetails
    {
        public string ItemId { get; set; }
        public string Price { get; set; }
    }

有人能帮助根据DTO类从主变量"response“中提取细节吗?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-10 08:39:06

如果您使用的是新闻软片,请试一试

代码语言:javascript
运行
复制
var token = JObject.Parse(response);//load
var detailsToken = token.SelectToken("details");//select
var itemDetails = detailsToken.ToObject<ItemDetails[]>(); //cast to array

只有ItemDetails上存在的属性才会被映射

票数 0
EN

Stack Overflow用户

发布于 2021-05-10 08:40:22

您可以将响应反序列化为一个对象,并从中获取您喜欢的任何内容。

.net-core中使用内置JSON库,如下所示

代码语言:javascript
运行
复制
using System.Text.Json;
using System.Text.Json.Serialization;

然后创建一个响应类,以包含响应值。

代码语言:javascript
运行
复制
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; }
    }

最后,反序列化并提取您喜欢的任何内容,如下所示

代码语言:javascript
运行
复制
var o = JsonSerializer.Deserialize<ResponseObject>(response);
ItemDetails[] itemDetails= o.Details;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67466545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档