You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:15:38