JSON 动态对象与强类型对象
JSON to Dynamic Object vs. Strongly Typed Object
我不确定我是不是没有了解大局,还是只是错过了一些东西,但是将 JSON-String 解析为动态对象有什么好处?
如果我有这样的class
class Product
{
public string Name { get; set; }
public double Price { get; set; }
public string Category { get; set; }
}
我使用 HttpClient 来获取这样的对象
Product product = await response.Content.ReadAsAsync<Product>();
此代码对我有什么好处?
string content = await response.Content.ReadAsStringAsync();
dynamic product = JObject.Parse(content);
如果我想使用它们,我需要写
product.Name
有了强类型方法,我至少有了智能感知。如果服务更改了产品,动态方法也无济于事,因为我仍然需要像上面提到的那样访问它。
那我错过了什么?为什么我应该使用动力学或何时使用?
您总是更喜欢使用强类型而不是动态类型 (performance\convenience)。
以下是您希望使用动态的一些情况:
当您想解析一个 xml 并且不想使用 XElement、XPath 等时
COM 互操作 - 它使事情变得非常简单和美好(尝试使用 Excel\Word,您会被说服)。
在某些情况下,使用动态而不是反射会更好、更易读。
我不确定我是不是没有了解大局,还是只是错过了一些东西,但是将 JSON-String 解析为动态对象有什么好处?
如果我有这样的class
class Product
{
public string Name { get; set; }
public double Price { get; set; }
public string Category { get; set; }
}
我使用 HttpClient 来获取这样的对象
Product product = await response.Content.ReadAsAsync<Product>();
此代码对我有什么好处?
string content = await response.Content.ReadAsStringAsync();
dynamic product = JObject.Parse(content);
如果我想使用它们,我需要写
product.Name
有了强类型方法,我至少有了智能感知。如果服务更改了产品,动态方法也无济于事,因为我仍然需要像上面提到的那样访问它。
那我错过了什么?为什么我应该使用动力学或何时使用?
您总是更喜欢使用强类型而不是动态类型 (performance\convenience)。
以下是您希望使用动态的一些情况:
当您想解析一个 xml 并且不想使用 XElement、XPath 等时
COM 互操作 - 它使事情变得非常简单和美好(尝试使用 Excel\Word,您会被说服)。
在某些情况下,使用动态而不是反射会更好、更易读。