将JSON发布到RestApi返回ErrorCode 500错误请求

时间:2018-09-27 14:03:48

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

我正在使用RestSharp将简单的对象发布到Web API。

对象如下所示

rest

使用RestSharp发布的代码为

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; }
}

我可以看到订阅对象正确地作为参数传递,但是该值被转义,这导致Web Api返回500错误。

我可以防止在C#中转义字符串吗?还是有其他方法可以发布数据

1 个答案:

答案 0 :(得分:1)

避免手动构造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);