将 Cognito 自定义属性 JSON 字符串映射到对象

问题描述 投票:0回答:1

我有一个名为 custom:events_permission 的 aws cognito 自定义属性,它将是这样的

[
   {
      "id":"48d258b7-8949-41z4-815a-f141487a6de1",
      "name":"event name",
      "user_id":"4eef6471-9a79-40r1-qw95-f22974f492d6",
      "role":"exhibitor-admin",
      "exhibitor_account_id":"42e812fe-f7ac-48fe-8a15-a0cb80c3ab59",
      "permissions":[
         "exh-manual:['view','edit','add']",
         "exh-leads:['*']",
         "exh-usr:['*']"
      ]
   }
]

我有一个名为 UserDto 的 DTO 对象:

public class UserDto
{
    public string ExhibitorId { get; set; }
    public string UserId { get; set; }
    public string Type { get; set; }
    public string TenantId { get; set; }
    public string Role { get; set; }
    public string Permissions { get; set; }
}

我如何使用automapper将ExhibitorId映射到exhibitor_account_id,将Permissions映射到权限等等。

c# json mapping amazon-cognito custom-attributes
1个回答
0
投票

关注: 根据附加的 JSON 和

UserDto
Permissions
应使用
List<string>
类型而不是
string
。除非您使用
string
类型的原因是您想要返回
Permissions
的序列化 JSON 数组。


如果您要从 JSON 中提取数据(反序列化),则可以使用 JSON 库,例如 System.Text.JsonNewtonsoft.Json 等,而无需 AutoMapper。

对于我的示例,我使用的是 System.Text.Json 库。

  1. 定义要映射的JSON属性字段名称(如果字段名称不同)
public class UserDto
{
    [JsonPropertyName("exhibitor_account_id")]
    public string ExhibitorId { get; set; }
    public string UserId { get; set; }
    public string Type { get; set; }
    public string TenantId { get; set; }
    public string Role { get; set; }
    public List<string> Permissions { get; set; }
}

由于附加的 JSON 带有蛇形属性名称,因此您应该应用

JsonNamingPolicy.SnakeCaseLower

List<UserDto> users = JsonSerializer.Deserialize<List<UserDto>>(/* JSON string value */, new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower
});
© www.soinside.com 2019 - 2024. All rights reserved.