c# - 如何将json对象反序列化为c#
问题描述
我想从 JSON 反序列化这个对象:
{"domain":"google.com","data":{"available":true,"expiration":null,"registrant_email":null}}
我使用这段代码:
public class Data
{
public string available { get; set; }
}
Data data = JsonConvert.DeserializeObject<Data>(finishResponse);
Console.WriteLine(data.available);
请帮帮我!
解决方案
试试这个改变。这样,您的 C# 类将匹配您正在接收的 JSON 对象。如果您感兴趣,您当然应该扩展Data
该类以包含其余的 json 字段。
public class Response
{
[JsonProperty(Required = Required.Default)]
public string Domain { get; set; }
[JsonProperty(Required = Required.Always)]
public Data Data { get; set; }
}
您会注意到我添加了所需的AllowNull
for Expiration
+RegistrantEmail
和Data
属性 to Always
。如果您发送 null 进行Data
反序列化将失败。
public partial class Data
{
[JsonProperty(Required = Required.Default)]
public bool Available { get; set; }
[JsonProperty(Required = Required.AllowNull)]
public object Expiration { get; set; }
[JsonProperty("registrant_email" ,Required = Required.AllowNull)]
public object RegistrantEmail { get; set; }
}
var response = JsonConvert.DeserializeObject<Response>(finishResponse);
Console.WriteLine(response.Data.available);
该答案还考虑了序列化的 json 字符串中的某些字段可能为 null,因此在这种情况下不会引发异常。
推荐阅读
- php - 如何处理反序列化数据
- c++ - 尝试在课堂上使用 boost::asio::deadline_timer 时出错
- html - 如何在图像上添加按钮
- gurobi - TypeError: 'int' 对象不是可迭代优化
- c++ - “字符串温度;” 其中“s”是字符串
- java - 如何使用 java.time 将带有可选时间的日期时间输入字符串转换为 UNIX 时间
- html - SCSS 循环检查输入并应用样式
- powershell - 当箭头在圆圈中旋转时,PowerShell 扩展在 Visual Studio Code 中到底在做什么?
- node.js - 如何在 NodeJS 中的 Azure Functions 中将 eventGrid 添加到 http 触发器?
- c++ - 如何修复 gtkmm 警告:不推荐使用的声明