动态设置JsonProperty PropertyName

时间:2015-11-16 12:11:10

标签: c# json asp.net-web-api

我'开发一些WebAPI并且必须返回带有2个标准服务字段的HttpResponseMessage和一个包含数组的字段。像这样:

{
  field1:"test",
  field2:123,
  array:[{},{}]
}

但实际上我需要几个响应,这些响应应该只在数组属性的名称上有所不同:

{
  field1:"test",
  field2:123,
  someArray:[{},{}]
}
and
{
  field1:"test",
  field2:123,
  someOtherArray:[{},{}]
}

数组中的元素类型在每个响应中都是相同的。所以我想为这种类型的响应创建一个类,只需更改其PropertyName。像这样:

public class Response
{
    public int field2 { get; set; }

    public string field1 { get; set; }

    [JsonProperty(PropertyName = ???)]
    public IEnumerable<SomeType> Array { get; set; }
}

我该如何实施?

1 个答案:

答案 0 :(得分:1)

你也可以考虑使用字典。

[HttpGet, Route("api/yourroute")]
public IHttpActionResult GetSomeData()
{
    try
    {
       var data = new Dictionary<string, dynamic>();
       data.Add("field1", "test");
       data.Add("field2", 123);

       var fieldName = someCondition == true? "someArray" : "someOtherArray";
       data.Add(fieldName, yourArray);

       return Ok(data);
    }
    catch
    {
        return InternalServerError();
    }
}
相关问题