c# - 从对象数组中检索一个值

Posted

技术标签:

【中文标题】c# - 从对象数组中检索一个值【英文标题】:c# - Retrieving a value from Object array 【发布时间】:2020-08-22 03:45:18 【问题描述】:

我正在从我的 c# 应用程序调用一个外部 API,它以 json 数组的形式返回数据,响应正文如下所示

    
        "result": [
            
                "name": "Tom",
                "id": "EM123"
            ,
            
                "name": "John",
                "id": "EM154"
            
        ]
    

在我的 c# 应用程序中,我只想检索第一个元素的 ID,对于上述响应正文,它将是 EM123..

上面是一个示例代码,我想从我的对象数组 obj 中检索“EM123”

【问题讨论】:

将json反序列化为具体类的数组,然后使用ToDictionary 【参考方案1】:

我的第一个建议是使用https://app.quicktype.io。如果您按照您提供的方式向它提供 JSON 响应,它将为您提供适当的 C# 对象定义。在这种情况下,定义如下所示:

  public partial class ApiResponse
    
        [JsonProperty("result")]
        public Result[] Result  get; set; 
    

    public partial class Result
    
        [JsonProperty("name")]
        public string Name  get; set; 

        [JsonProperty("id")]
        public string Id  get; set; 
    

添加这两个类后,您将能够执行以下操作:

var apiResponse = JsonConvert.DeserializeObject<ApiResponse>(reponse);
Console.WriteLine("This is what I need: " + apiResponse.Result.First().Id);

希望这会有所帮助。

【讨论】:

上面提到的方法是用Newtonsoft库。 var response = Newtonsoft.Json.JsonConvert.DeserializeObject(result) 你是对的,这是我的错误,我使用 jsonresponse 而不是 JsonConvert

以上是关于c# - 从对象数组中检索一个值的主要内容,如果未能解决你的问题,请参考以下文章

C# JSON 反序列化:如何从 JSON 对象数组中获取值 [重复]

使用 underscore.js 从对象/数组中仅检索一个字段

根据JavaScript中的属性值从对象数组中选择[重复]

Javascript - 从对象内部的数组中获取唯一值

在 Excel C# 范围内写入一个二维对象数组

c# json对象中含有数组,数组中又含有数组!