C# — изменение имени атрибута, опубликованного с помощью HttpClient

Я использую HttpClient для отправки некоторых данных на сервер на основе NodeJs.

Class Employee
{
      public string Name { get; set; }
}

Функциональный код:

Employee e = new Employee();
e.Name = "TestUser";
var client = new HttpClient();

var task = client.PostAsJsonAsync(urlTemplate, e);
var result = task.Result.Content.ReadAsStringAsync().Result;

Приложение узла ожидает свойство с именем FirstName (instead of Name)

В WCF мы можем изменить имя DataMember, поместив атрибут поверх его определения:

[DataMember(Name = "FirstName")]
public string Name  {   get;   set;  }

Есть ли у нас аналогичный параметр при отправке данных с помощью HttpClient?


person SharpCoder    schedule 19.11.2015    source источник


Ответы (2)


Один из вариантов — использовать библиотеку Newtonsoft.Json. на вашем модельном классе вы можете сделать

Class Employee
{
      [JsonProperty(PropertyName = "FistName")]
      public string Name { get; set; }
}

перед PUT/POST используйте функцию JsonConvert.SerializeXXXX, чтобы преобразовать ваш объект в строку и использовать содержимое строки в качестве полезной нагрузки HttpClient.

person Xiaomin Wu    schedule 19.11.2015

Вы можете использовать свойства сериализации JSON, как указано в документации. Ознакомьтесь с соответствующим сообщением: Как я могу изменить имена свойств при сериализации с помощью Json.net?.

person Igor Ševo    schedule 19.11.2015