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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:56:57