如何使用 C# 将 JSON 对象解析为类

Posted

技术标签:

【中文标题】如何使用 C# 将 JSON 对象解析为类【英文标题】:How to parse a JSON object into class using C# 【发布时间】:2021-07-03 03:02:24 【问题描述】:

我的 Json 对象

"returnStatus":"code":"0200","status":"SUCCESS","message":"The operation was successful.","requestTime":"20210407141112083","responseTime":"20210407141112256","allCities":["cityID":2622,"cityName":" UNKNOWN","cityCode":"AAA","area":"KHI"

我想解析成class.How? 如何获取cityID、CityName、cityCode、area等。

我正在尝试这段代码

allCities Cities = JsonConvert.DeserializeObject<dynamic>(response);

【问题讨论】:

好的,然后?您发布的代码有什么问题? 我们得到这种类型的错误。解析值时遇到意外字符 您发布的 json 无效(缺少 "]" 这些关闭标签)。 不要使用dynamic,除非你真的,真的必须这样做。只需创建一个代表 JSON 的类,就像 Ryan Thoma 的回答所建议的那样。 【参考方案1】:

您可以像 Ryan 之前所说的那样使用在线工具从您的 json 创建类。但我更喜欢使用 Visual Studio 中集成的“Paste Special”功能。

【讨论】:

【参考方案2】:

您可以使用Json2CSharp 创建类来反序列化您的对象。如果您愿意,可以相应地重命名它们。

// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 
public class ReturnStatus

    public string code  get; set; 
    public string status  get; set; 
    public string message  get; set; 
    public string requestTime  get; set; 
    public string responseTime  get; set; 


public class AllCity

    public int cityID  get; set; 
    public string cityName  get; set; 
    public string cityCode  get; set; 
    public string area  get; set; 


public class Root

    public ReturnStatus returnStatus  get; set; 
    public List<AllCity> allCities  get; set; 

然后您可以使用 myDeserializedClass.allCities 访问城市列表。

【讨论】:

以上是关于如何使用 C# 将 JSON 对象解析为类的主要内容,如果未能解决你的问题,请参考以下文章

c#如何获得返回json数组中的数组

如何解析会导致非法 C# 标识符的 JSON 字符串?

Angular 5 / Typescript - 如何将复杂的 json 对象转换为类

如何使用 C# 解析 JSON?

如何使用 C# 比较两个 Json 对象

Flutter 使用合理的 null 安全性将多级 JSON 解析为类