C#将Json序列化对象内的对象抛出错误的请求

时间:2018-03-27 21:01:55

标签: c# json

我有一个我定义的简单对象

using Newtonsoft.Json;
public class survey
{
    public string title { get; set; }
    public string description { get; set; }
    public string deploymentType { get; set; }
    public string deploymentMethod { get; set; }
    public string instanceId { get; set; }
    public surveyWhat what { get; set; }
    public string[] contacts { get; set; }
}

public class surveyWhat
{
    public bool removeDuplicates { get; set; }
    public string instanceId { get; set; }
    public string subject { get; set; }
    public string from { get; set; }
    public string bcc { get; set; }
    public string emailTemplate { get; set; }
    public string notificationId { get; set; }
}

使用这两个类构建实际对象时,我按如下方式进行操作。

survey s = new survey()
        {
            title = "test from .Net",
            description = "test of immediate email deployment",
            deploymentType = "immediate - deploy",
            deploymentMethod = "email",
            instanceId = "bla123",
            what = new surveyWhat()
            {
                removeDuplicates = false,
                subject = "test from .Net",
                from = "a@b.c",
                bcc = "a@b.c",
                emailTemplate = "123id",
                notificationId = "a@b.c"
            },
            contacts = new string[] { "user@person.com" }
        };

然后我使用这个对象并使用NewtonSoft.Json dll,我将对象序列化为JSON字符串以传递给REST端点,如此。

string json = JsonConvert.SerializeObject(s);

        using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
        {                
            streamWriter.Write(json);
        }

        var httpResponse = (HttpWebResponse)webRequest.GetResponse();

这会引发400错误的请求错误。 JSON似乎有效,但在我身上失败了。它可以与对象中的对象有关吗?

object() { object(){} }

任何指针都会非常感激。

我正在使用.Net 4.5.2进行此构建。

1 个答案:

答案 0 :(得分:0)

实际上,我认为回答你的问题已经足够好了,正如我在评论中所说:

  

A 400表示请求格式错误。换句话说,数据   客户端发送到服务器的流没有遵循规则。我们   不了解您的API,它的期望是什么。您   说JSON似乎是有效的。服务器响应它不是,所以我宁愿   认为你必须再看一遍它。也许读一些   您的API的文档。

现在更多 - 您可以使用Postman应用程序来测试对API的请求。如果您没有文档,这样您就可以找到正确的请求。然后,当您知道什么是正确的请求数据时,您可以检查序列化生成的json字符串,并检查错误。