将Json反序列化为对象

时间:2016-07-10 17:57:47

标签: c# json json.net

因此我正在使用的应用程序将执行大量返回json的请求,是否适合创建一个类,该类包含将返回json的每个特定请求的属性那可以转换成那个类的属性吗?

例如,假设我有2个请求,一个返回名字,姓氏和工作角色,我还有另一个返回商家名称,营业地点和商业邮政编码的请求,可以这样做:< / p>

class BusinessRetrieval {
  public string BusinessLocation{ get; set; }
  public string BusinessPostCode { get; set; }
}

class EmployeeRetrieval {
  public string Firstname { get; set; }
  public string Surname { get; set;}
  public string Postcode { get; set; }
}

所以现在我有2个类来概述在请求发出后将要发回的属性,现在可以这样做了:

BusinessRetrieval business = (BusinessRetrieval)JsonConvert.DeserializeObject(businessResponse, typeof(BusinessRetrieval));
EmployeeRetrieval employee = (EmployeeRetrieval)JsonConvert.DeserializeObject(employeeResponse, typeof(EmployeeRetrieval));

我在这里问的是这样做可以吗?我打算处理很多请求(10-15),我计划为每个请求创建一个类,每个响应都会给出回复的属性,我觉得这样做会很好结构吧。

这样可以吗?

2 个答案:

答案 0 :(得分:1)

是的,这是处理它以使您的代码类型安全的唯一合理方法。 虽然您无法将非泛型DeserializeObject的结果强制转换为您选择的类型 - 但它会抛出异常。 而是使用DeserializeObject的通用版本:

BusinessRetrieval business = JsonConvert.DeserializeObject<BusinessRetrieval>(businessResponse);
EmployeeRetrieval employee = JsonConvert.DeserializeObject<EmployeeRetrieval>(employeeResponse);

答案 1 :(得分:0)

我认为不仅可以,我认为这是一种最佳实践,因此您可以通过任何方法传递该对象而不会出现任何问题。