序列化含子类的类遇类型转换错误,求JSON数组填充方法
解决Cannot implicitly convert type 'serialize.Roles' to 'serialize.Roles[]'错误
这个错误的核心原因是你把单个Roles对象直接赋值给了**Roles[]类型的数组属性**,两者类型不匹配。下面是两种直接可行的修正方式:
方式1:直接初始化数组并填充元素
假设你的主类(比如命名为RequestModel)定义了Roles[] Roles属性,直接创建包含Roles对象的数组赋值即可:
// 示例类结构 public class RequestModel { public string User { get; set; } public string Passwd { get; set; } public string IdAplicativo { get; set; } public string Firma { get; set; } public Mensaje Mensaje { get; set; } public Roles[] Roles { get; set; } // 数组类型属性 } public class Roles { public string RoleId { get; set; } public string RoleName { get; set; } // 其他自定义字段 } // 正确赋值写法 var request = new RequestModel { User = "testUser", Passwd = "testPass", IdAplicativo = "app123", Firma = "signature", Mensaje = new Mensaje { /* 填充Mensaje的字段 */ }, // 初始化数组,可添加单个或多个Roles对象 Roles = new Roles[] { new Roles { RoleId = "1", RoleName = "Admin" }, new Roles { RoleId = "2", RoleName = "Editor" } } };
方式2:用集合(List)构建后转换为数组
如果需要动态添加多个Roles对象,先使用List<Roles>收集元素,再通过ToArray()转换为数组:
var rolesList = new List<Roles>(); // 动态添加角色元素 rolesList.Add(new Roles { RoleId = "1", RoleName = "Admin" }); rolesList.Add(new Roles { RoleId = "3", RoleName = "Viewer" }); var request = new RequestModel { // 填充其他字段... Roles = rolesList.ToArray() // 转换为数组后赋值 };
完成上述赋值后,无论是使用System.Text.Json还是Newtonsoft.Json进行序列化,都会生成符合预期的JSON结构——Roles字段会呈现为包含多个角色对象的数组。
内容的提问来源于stack exchange,提问作者jhonatan_611
相关产品推荐
相关产品推荐

