簡體   English   中英

如何 JSON 反序列化子對象 ASP.NET Core

[英]How to JSON deserialize child objects ASP.NET Core

我正在嘗試反序列化 JSON API 響應,但不確定如何訪問子對象的屬性。

這是我正在使用的 API 響應示例:

 { "token_type": "Bearer", "expires_at": 1598830199, "expires_in": 21408, "refresh_token": "*Removed*", "access_token": "*Removed*", "athlete": { "id": *Removed*, "username": null, "resource_state": 2, "firstname": "Jon", "lastname": "Clyde", "city": "*Removed*", "state": "England", "country": "United Kingdom", "sex": "M", "premium": true, "summit": true, "created_at": "*Removed*", "updated_at": "*Removed*", "badge_type_id": 1, "profile_medium": "avatar/athlete/medium.png", "profile": "avatar/athlete/large.png", "friend": null, "follower": null } }

通過創建一個具有屬性 expires_at、expires_in、access_token、refresh_token 的類,然后使用以下代碼行,我設法訪問了我需要的根屬性:

 using var responseStream = await response.Content.ReadAsStreamAsync(); var stravaResponse = await JsonSerializer.DeserializeAsync<Authorisation>(responseStream);

但是,我需要訪問“athlete”子對象下的 id、用戶名、名字和姓氏。

有沒有一個很好的推薦方法來實現這一目標?

只需添加另一個代表athlete模型的類,然后將其作為頂級類的屬性:

public class Authorisation
{
    // Root properties
        
    // Nested athlete object
    public Athlete Athlete { get; set; }
}

public class Athlete
{
    public string Id { get; set; }

    public string Username { get; set; }

    // Other properties
}

然后,您可以像往常一樣在 C# 中訪問這些值:

var athleteId = stravaResponse.Athlete.Id;

只是為了添加 Noah 添加的內容,如果您使用的是 Visual Studio(不確定 VS Code),您可以使用:

編輯 >> 選擇性粘貼 >> 將 JSON 粘貼為類

在菜單中,它將創建能夠反序列化您粘貼的任何(有效)JSON 所需的類。 一旦你有了它,你就可以使用該類反序列化並像訪問任何其他類一樣訪問它的成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM