C# 不使用类序列化包含地址数组的JSON结构的实现方法
解决方案
你只需要将Addresses字段的赋值从单个匿名对象调整为匿名对象数组即可,调整后的完整代码如下:
string jsonObject = JsonSerializer.Serialize(new { Name = "Mark", Addresses = new [] { new { address = "1234 Main street" }, new { address = "1234 Pine Street" } } });
说明
- 原有代码的问题在于
Addresses对应的值是单个匿名类实例,序列化后会生成JSON对象而非数组,使用new [] { 多个同结构匿名对象 }的写法,就会被序列化为符合要求的JSON数组。 - System.Text.Json的
JsonSerializer默认会将属性名转换为驼峰命名格式,如果你需要严格匹配预期JSON中首字母大写的Name属性,可以添加序列化配置关闭自动命名转换:string jsonObject = JsonSerializer.Serialize(new { Name = "Mark", Addresses = new [] { new { address = "1234 Main street" }, new { address = "1234 Pine Street" } } }, new JsonSerializerOptions { PropertyNamingPolicy = null }); - 不需要严格匹配大小写的话,保持属性名小写
name也可正常使用,只是序列化后输出的键名会是name。
内容的提问来源于stack exchange,提问作者Kevin Jones
相关产品推荐
相关产品推荐

