使用JSON.NET在.NET WinForms中生成双层嵌套列表JSON
解决JSON.NET生成双层括号列表的问题
首先明确:双层括号的列表嵌套完全符合JSON规范,JSON支持数组嵌套数组,所以你要的格式是合法的。
问题出在你的数据结构上——当前你给points字段赋值的是单层列表,所以序列化后只有单层括号。要生成双层括号,只需要确保points的类型是「列表的列表」,而不是普通列表,具体分两种情况处理:
1. 使用强类型/匿名类序列化
如果是用类来定义数据结构,把points的类型声明为嵌套列表,比如:
// 强类型示例 public class MyData { public List<List<int>> Points { get; set; } } // 赋值时传入嵌套列表 var data = new MyData { Points = new List<List<int>> { new List<int> { 10, 20, 30 } // 这里即使只有一个子列表,也是嵌套结构 } }; // 序列化 string json = JsonConvert.SerializeObject(data, Formatting.Indented);
这样生成的JSON里points字段就是[[10,20,30]],双层括号的格式。
如果用匿名类,写法类似:
var data = new { points = new List<List<int>> { new List<int> { 5, 15, 25 } } }; string json = JsonConvert.SerializeObject(data);
2. 手动构建JObject/JArray
如果是手动拼接JSON结构,要把points的值设为嵌套的JArray:
var pointsArray = new JArray(new JArray(1, 2, 3)); var jsonObj = new JObject { ["points"] = pointsArray }; string json = jsonObj.ToString(Formatting.Indented);
生成的结果同样是双层括号的格式。
总结一句话:只要你的数据结构本身是「列表包含列表」,JSON.NET就会自动生成双层括号的JSON格式,不需要额外配置。
内容的提问来源于stack exchange,提问作者Chase
相关产品推荐
相关产品推荐

