У меня есть объект, который я конвертирую в json, чтобы отправить его в веб-службу. я добавил метод класса, который возвращает JSON снабжать струной, тетивой и т.п.Как я могу неявно сериализовать через DataContractJsonSerializer при создании StringContent для HTTPClient?
public string ToJson()
{
return new JavaScriptSerializer().Serialize(this).ToLower();
}
Метод HTTPClient.PutAsync()
принимает StringContent
объект, который я создаю, как так:
var content = new StringContent(object.ToJson(), Encoding.UTF8, "application/json");
Я могу назвать PutAsync()
и все работает отлично.
Я недавно нашел другой метод сериализации, который использует [DataContract]
, [DataMember]
, DataContractJsonSerializer
и поток сериализовать объект. Я хотел бы использовать этот метод вместо этого, потому что он дает больший контроль над результатом с атрибутами, но требует гораздо большего кода шаблона (запись в поток, перемещение, чтение и т. Д.).
Учитывая, что я использовал атрибуты Data, чтобы указать, как должен быть сериализован мой объект, как я могу указать, что для его сериализации следует использовать DataContractJsonSerializer
? Предпочтительно, я могу просто передать объект StringContent
без явного вызова метода, например, так:
var content = new StringContent(object, Encoding.UTF8, "application/json");
Подобно тому, как ToString()
неявно вызывается в определенных ситуациях, я хотел бы знать, если есть что-то, что понимает, что если Я указываю тип содержимого "application/json"
, что переданный объект должен быть сериализован в json.
Но ни это будет называться неявно, не так ли? Я хотел бы напрямую передавать объекты в HTTPClient, без необходимости вызова настраиваемого метода, который выполняет сериализацию. Да, я решил использовать стороннюю библиотеку для этого и решил, что это бессмысленно в моей ситуации и что встроенные способы более чем достаточны. – null
. Самый близкий, который вы можете получить, - это метод расширения ['HttpClient.PostAsJsonAsync'] (https://msdn.microsoft.com/en-us/library/hh944521 (v = vs.118) .aspx), который позволяет вам непосредственно передайте какой-то экземпляр, но под капотом это будет использовать библиотеку Newtonsoft.Json для сериализации объекта, и вы не можете с этим поделать. –
Это неутешительно. Спасибо за вашу помощь в преобразовании в сериализатор контрактов. – null