在C#中遍历JSON对象并将值存入两个List的实现问题
解决JSON反序列化后转成List的问题
你已经搞定了反序列化这个核心步骤,其实剩下的转List操作非常简单!不过先提个小细节:你的JSON键是"foodtype"(小写t),但类里的属性是foodType(大写T),Newtonsoft.Json默认大小写敏感,这会导致反序列化后foodType数组为空,得先把这个映射问题解决掉。
步骤1:修正类的属性映射
要么修改属性名和JSON键完全一致,要么用JsonProperty特性指定映射关系:
using Newtonsoft.Json; public class Rootobject { [JsonProperty("foodtype")] // 匹配JSON里的键名 public string[] foodType { get; set; } public string[] drinks { get; set; } // 这个和JSON键名一致,没问题 }
步骤2:将数组转成目标List
反序列化完成后,直接把数组转换成List就行,有两种常用方式:
方式一:用List构造函数传入数组
// 初始化JSON对象(补充完整你的代码) JObject jsonResult = JObject.Parse(@"{""foodtype"": [""Pizza"", ""Pasta"", ""Bread""], ""drinks"": [""Coke"", ""Root Beer""]}"); // 你已经完成的反序列化代码 var allObject = JsonConvert.DeserializeObject<Rootobject>(jsonResult.ToString()); // 转成目标List List<string> food = new List<string>(allObject.foodType); List<string> drink = new List<string>(allObject.drinks);
方式二:用LINQ的ToList()方法(需引用System.Linq)
using System.Linq; // ... 反序列化代码同上 List<string> food = allObject.foodType.ToList(); List<string> drink = allObject.drinks.ToList();
这样就能得到你期望的两个List啦,两种方法都能达到目的,选你习惯的就行~
内容的提问来源于stack exchange,提问作者bgrow11
相关产品推荐
相关产品推荐

