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

C#中如何创建含容器与数组的指定格式JSON对象?

解决JSON序列化结构问题的方案

嘿,我来帮你搞定这个问题~你的核心问题出在endpoints字段的初始化方式上——你把它写成了字符串字面量"[dsdsd]",序列化器自然会把它当成普通字符串处理,而不是解析成数组。咱们直接修正这个点就能得到想要的JSON结构啦!

1. 用你原本的JavaScriptSerializer实现正确格式

只需要把endpoints改成实际的数组(用new[] { ... }初始化),而不是字符串:

var data = new 
{
    message = new { text = "test sms" },
    endpoints = new[] { "+9101234" }
};

string json = new JavaScriptSerializer().Serialize(data);

这段代码运行后,输出的JSON就是你想要的格式:

{ "message":{ "text":"test sms"}, "endpoints":["+9101234"] }

2. 更优的序列化方案(推荐)

其实JavaScriptSerializer在.NET Framework中已经被标记为过时,在.NET Core/.NET 5+里更是直接移除了。推荐使用更现代、功能更强大的序列化库:

方案A:Newtonsoft.Json(Json.NET,最流行的第三方库)

先通过NuGet安装Newtonsoft.Json,然后用下面的代码:

var data = new 
{
    message = new { text = "test sms" },
    endpoints = new[] { "+9101234" }
};

string json = Newtonsoft.Json.JsonConvert.SerializeObject(data);

方案B:System.Text.Json(.NET Core/.NET 5+内置库)

如果用的是较新的.NET版本,直接用官方内置的System.Text.Json即可,无需额外安装:

var data = new 
{
    message = new { text = "test sms" },
    endpoints = new[] { "+9101234" }
};

string json = System.Text.Json.JsonSerializer.Serialize(data);

这两种方案不仅能正确生成你要的JSON结构,还支持更多序列化配置(比如格式化输出、忽略空值等),比JavaScriptSerializer好用得多。

内容的提问来源于stack exchange,提问作者Dilip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:22:49