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
相关产品推荐
相关产品推荐

