如何 JSON 反序列化子对象 ASP.NET 核心
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
}
}
我已经设法访问了我需要的根属性,方法是创建一个 class 属性 expires_at、expires_in、access_token、refresh_token 然后使用以下代码行:
using var responseStream = await response.Content.ReadAsStreamAsync();
var stravaResponse = await JsonSerializer.DeserializeAsync<Authorisation>(responseStream);
但是,我需要访问“athelete”的子对象下的 ID、用户名、名字和姓氏。
有推荐的好方法吗?
只需添加另一个 class 代表 athlete
的模型,然后将其设为 top-level class:
的 属性
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 所需的 classes。一旦你有了这个,你就可以使用 class 反序列化并像访问任何其他 class.
一样访问它的成员
我正在尝试反序列化 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
}
}
我已经设法访问了我需要的根属性,方法是创建一个 class 属性 expires_at、expires_in、access_token、refresh_token 然后使用以下代码行:
using var responseStream = await response.Content.ReadAsStreamAsync();
var stravaResponse = await JsonSerializer.DeserializeAsync<Authorisation>(responseStream);
但是,我需要访问“athelete”的子对象下的 ID、用户名、名字和姓氏。
有推荐的好方法吗?
只需添加另一个 class 代表 athlete
的模型,然后将其设为 top-level class:
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 所需的 classes。一旦你有了这个,你就可以使用 class 反序列化并像访问任何其他 class.
一样访问它的成员