如何使用Json.NET将JSON数字列表转换为C# int[]数组?
解决Json.NET将JSON数字列表转换为C# int[]的问题
嘿,我来帮你搞定这个转换问题!你已经成功读取并解析了JSON,接下来用Json.NET实现转换其实很简单,这里有两种实用的方法:
方法一:使用强类型模型(推荐,适合结构化场景)
先创建一个和JSON结构对应的C#类,这样解析起来更清晰,也方便后续扩展:
public class CourseGrades { public string Course { get; set; } public int[] Grades { get; set; } }
然后直接反序列化为这个类的实例,就能直接拿到int数组了:
// 读取JSON文件内容 string json = File.ReadAllText(jfile); // 反序列化为强类型对象 var courseData = JsonConvert.DeserializeObject<CourseGrades>(json); // 获取int数组 int[] gradesArray = courseData.Grades; // 验证结果(可选) Console.WriteLine($"课程:{courseData.Course}"); Console.WriteLine("成绩数组:" + string.Join(", ", gradesArray));
方法二:直接从JObject转换(快速场景,无需创建类)
如果你不想额外定义类,可以直接从已经解析好的JObject里提取grades节点,再用ToObject<int[]>()方法完成转换:
string json = File.ReadAllText(jfile); JObject data = JObject.Parse(json); // 直接将JToken转换为int[] int[] gradesArray = data["grades"].ToObject<int[]>(); // 验证结果 Console.WriteLine("成绩数组:" + string.Join(", ", gradesArray));
为什么之前的尝试可能失败?
大概率是没用到ToObject<T>()这个关键方法——Json.NET不会自动把JToken转换成数组类型,需要显式调用这个方法来完成类型转换。
内容的提问来源于stack exchange,提问作者Hagland
相关产品推荐
相关产品推荐

