Entiende el código bien antes de usarlo a tu proyecto y si tdeseas aportar algo puedes dejarlo en la sección de comentarios.
Solución:
Esto es para @MaxiWheat y cualquier otra persona interesada en cómo usar JSON.NET como el serializador JSON en una solicitud RestSharp. Básicamente, utilicé el enfoque descrito en esta publicación de blog de Patrick Riley:
// create the request
var request = new RestRequest(yourUrlHere, Method.POST) RequestFormat = DataFormat.Json ;
// attach the JSON.NET serializer for RestSharp
restRequest.JsonSerializer = new RestSharpJsonNetSerializer();
y el RestSharpJsonNetSerializer
es una implementación (menos de 100 líneas de código) de los chicos de JSON.NET (John Sheehan) que se puede encontrar en sus páginas de Github
Con esta configuración, mis problemas desaparecieron y pude tener un DTO adecuado con buenas propiedades de CamelCase, mientras que el JSON serializado las usa en “minúsculas”.
Encontré este problema y lo resolví de una manera ligeramente diferente a la anterior, quería anotarlo aquí.
Tenemos una factory
clase que construye todas nuestras solicitudes. Se parece a lo siguiente
public IRestRequest CreatePutRequest(string resource, TBody body)
var request = new RestRequest(resource)
Method = Method.PUT,
;
request.AddParameter("application/json", Serialize(body), ParameterType.RequestBody);
return request;
En lugar de usar el AddJsonBody
y AddBody
métodos contra la solicitud, los cuales causan serialización, utilicé AddParameter
que agregará el objeto que pasa sin serialización. Creé un método llamado Serialise
que utiliza JSON.net
para serializar nuestra clase.
private object Serialize(T item)
return JsonConvert.SerializeObject(item);
Esto entonces nos permite usar JSON.net
‘s JsonProperty
anotación sobre sus propiedades. Aquí hay un ejemplo –
public class Example
[JsonProperty(PropertyName = "name")]
public string Name get; set;
[JsonProperty(PropertyName = "created")]
public DateTime Created get; set;
[JsonProperty(PropertyName = "updated")]
public DateTime Updated get; set;
En RestSharp 104.4, el valor predeterminado JsonSerializer
no usa el [SerializeAs]
attributecomo se ve al revisar el código fuente.
Una solución a esto es crear un serializador personalizado que use Json.NET JsonSerializer
(un buen ejemplo está aquí) y luego decora tus propiedades con el [JsonProperty]
attributeal igual que:
Public Property EmailAddress As String
¡Haz clic para puntuar esta entrada!(Votos: 0 Promedio: 0)
Utiliza Nuestro Buscador