静态初始值设定项,其属性名称与对象名称相同

时间:2013-10-22 18:16:23

标签: c# .net initialization

我有一个API返回一些对象,称之为ObjectA。实际上,它永远不会自行返回,带有这些数据的响应是以下形式之一;

{
   "Status":"Success",
   "ObjectA": {
          "Prop1":"Value",
          "Prop2":"Value"
    }
}

{
    "Status":"Success",
    "ObjectAs": [
        {
           // instances of ObjectA
        } 
    ]
}

现在我想更新这个对象。这是通过提供您想要更新的属性作为PUT的主体来完成的。起初我认为对象将是整个身体,在与API团队交谈后,我了解到它实际上应该是这种形式;

{
    "ObjectA": {
        "PropToUpdate":"NewValue"
    }
}

这里的问题是我正在使用;

  string body = JsonConvert.SerializeObject(new { PropToUpdate = "SomeValue" });

然而,现在需要像以下那样无法编译;

  string body = JsonConvert.SerializeObject(new ObjectA = new { PropToUpdate = "SomeValue" }});

这种情况有解决方法吗?我认为不编译的原因是相当明显的,我知道一些工作(不使用静态启动或更改客户端中的类名),是否有任何方法可以实现所需的结果而无需使用任何一个我提到过的工作?对于字符串文字,可能有一个像@这样的预编译器方向,它允许我使用静态启动吗?

1 个答案:

答案 0 :(得分:1)

JsonConvert.SerializeObject(new { ObjectA = new { PropToUpdate = "SomeValue" } })
// indented, that's

{
  "ObjectA": {
    "PropToUpdate": "SomeValue"
  }
}