如何在C#中序列化不含属性名的自定义对象列表JSON
解决方案
方法1:直接序列化目标属性
这是最简便的方式——既然你要的就是baseClass里的data列表,直接序列化这个列表就行:
var json = new JavaScriptSerializer().Serialize(baseClass.data);
直接得到无外层包裹的数组JSON,完全符合需求。
方法2:修改反射逻辑返回单个值
你的反射方法返回的是所有属性的集合,所以序列化后多了一层数组。如果BaseClass只有data这一个属性,可以调整方法只返回第一个属性的值:
public static object GetSinglePropertyValue<T>(T input) { return input.GetType() .GetProperties() .FirstOrDefault()? .GetValue(input); }
调用时:
var value_only = GetSinglePropertyValue(baseClass); var json = new JavaScriptSerializer().Serialize(value_only);
这样序列化的就是列表本身,不会出现嵌套数组。
方法3:用Newtonsoft.Json简化操作
如果项目允许引入Newtonsoft.Json库,操作会更灵活:
using Newtonsoft.Json; // 方式1:直接序列化属性值 var json = JsonConvert.SerializeObject(baseClass.data); // 方式2:动态提取属性值(适用于不知道属性名的场景) var prop = baseClass.GetType().GetProperty("data"); var json = JsonConvert.SerializeObject(prop?.GetValue(baseClass));
内容的提问来源于stack exchange,提问作者the-a-monir
相关产品推荐
相关产品推荐

