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)。

以下是您希望使用动态的一些情况:

  1. 当您想解析一个 xml 并且不想使用 XElement、XPath 等时

  2. COM 互操作 - 它使事情变得非常简单和美好(尝试使用 Excel\Word,您会被说服)。

  3. 在某些情况下,使用动态而不是反射会更好、更易读。