将JSON数据加载到C#类:新手适配数据结构类创建难题
把你的JSON转成C#类的解决方案
嘿,刚上手JSON转C#类的时候犯懵太正常了!我来帮你把这个JSON结构拆解成对应的C#类,这样你就能直接用来存储和操作数据啦。
首先先把你的JSON示例贴出来方便对照:
{"FirstItem": {"id": 1, "type": "foo", "colours": ["blue", "black", "green"], "reviews": {"positive": ["The best", "unbelievable..."]}}}
我们可以按照JSON的层级结构来创建对应的C#类:
1. 最外层的根类
这个类包含FirstItem属性,对应JSON最顶层的键:
public class RootObject { public Item FirstItem { get; set; } }
2. FirstItem对应的类
这个类包含id、type、colours和reviews这些属性:
public class Item { public int Id { get; set; } public string Type { get; set; } public List<string> Colours { get; set; } public Reviews Reviews { get; set; } }
这里我把属性名改成了C#常用的帕斯卡命名法(首字母大写),如果需要严格对应JSON里的小写键,可以用特性标注——比如用System.Text.Json的话加[JsonPropertyName("id")],用Newtonsoft.Json的话加[JsonProperty("id")]就行。
3. Reviews对应的类
这个类包含positive属性,对应评论里的正面评价数组:
public class Reviews { public List<string> Positive { get; set; } }
怎么用这些类?
比如你要把JSON字符串反序列化成C#对象,用System.Text.Json(.NET Core/.NET 5+内置)的话可以这么写:
string json = "{\"FirstItem\": {\"id\": 1, \"type\": \"foo\", \"colours\": [\"blue\", \"black\", \"green\"], \"reviews\": {\"positive\": [\"The best\", \"unbelievable...\"]}}}"; RootObject result = JsonSerializer.Deserialize<RootObject>(json);
要是用Newtonsoft.Json(老项目常用),代码是这样的:
RootObject result = JsonConvert.DeserializeObject<RootObject>(json);
小贴士
- 类和属性的名字可以根据你的业务场景修改,比如把
RootObject改成ProductContainer,Item改成Product,这样更贴合实际用途。 - 如果JSON里有可选的字段,可以把对应的属性设为可空类型(比如
public int? Id { get; set; }),避免反序列化时出错。
内容的提问来源于stack exchange,提问作者devklick
相关产品推荐
相关产品推荐

