Отправка JSON в RestApi возвращает ErrorCode 500 неверный запрос - PullRequest
0 голосов
/ 27 сентября 2018

Я использую RestSharp для публикации простого объекта в веб-API.

Объект похож на ниже

public class Subscription
{
    [JsonProperty("subscriber")]
    public Subscribe subscribe { get; set; }
}

[JsonObject(MemberSerialization.OptIn)]
public class Subscribe
{
    [JsonProperty("mailinglist_ids")]
    public string[] mailinglist_ids { get; set; }
    [JsonProperty("subscriber")]
    public Subscriber subscriber { get; set; }
}

[JsonObject(MemberSerialization.OptIn)]
public class Subscriber
{
    [JsonProperty("foreign_id")]
    public string foreign_id { get; set; }
    [JsonProperty("email")]
    public string email { get; set; }
    [JsonProperty("first_name")]
    public string first_name { get; set; }
    [JsonProperty("last_name")]
    public string last_name { get; set; }
}

Код для публикации с использованием RestSharp:

var client = new RestClient(BaseUrl);
var request = new RestRequest(Method.POST);
request.Parameters.Clear();
request.RequestFormat = DataFormat.Json;
request.Resource = ressource;
request.AddHeader("Authorization", "Basic APITOKEN");
request.AddHeader("Content-Type", "application/json");
request.AddBody(subscription);
var response = client.Execute(request);

Я вижу, что объект подписки передается как параметр правильно, но значение экранируется, в результате чего Web Api возвращает ошибку 500.

Могу ли я предотвратить экранирование строк в C # или есть какой-либо другой способ размещения данных

1 Ответ

0 голосов
/ 27 сентября 2018

Избегайте создания JSON вручную, что может привести к ошибкам, используйте AddJsonBody() с объектом, представляющим данные для сериализации

Добавление subscription к телу как json.

Subscription subscription = new Subscription() {
    //..assuming it is populated
};

//...

//Serializes obj to JSON format and adds it to the request body.
request.AddJsonBody(subscription);
...