解析JSON请求 - 接收错误

时间:2015-12-12 13:54:23

标签: c# json

我目前正在接收JSON,然后我试图将该响应分解为一个类。我到目前为止的代码如下:

public class Response
{
    public string ID { get; set; }
    public string Description { get; set; }
}

public void Example()
{
    string JSONResponse = JsonConvert.SerializeObject(FetchDeskData("cases"));

    // Errors on this next line
    Response trimmedResponse = JsonConvert.DeserializeObject<Response>(JSONResponse);
}

“FetchDeskData(”cases“)返回的数据是(this),但是,在错误的行上,我收到以下错误:

Error converting value "{"total_entries":598042,"page":1,"...(continues)

我应该以不同的方式解析这个JSON吗?在序列化/反序列化之前我应该​​做些什么吗?

我从desk.com提取这些数据,他们有一些你可以在http://dev.desk.com找到的文档,但它似乎没有告诉我在解析之前我需要过滤掉一些东西。< / p>

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用Visual Studio 2013,2015从json创建模型类,我做到了并且解析了JSON。 要使用此功能,您必须在剪贴板中放置JSON / XML,将光标放在.cs文件中,然后使用编辑&gt;选项。选择性粘贴&gt;粘贴JSON AS类

Paste Special JSON as classes

查看生成的代码:

<a onclick="notesChecked()">Checked</a>

答案 1 :(得分:0)

我通过使用以下代码解决了这个问题,以便从API解析/读取响应:

private void TestProcess()
{
    JObject objData = JObject.Parse(FetchJSONData());

    string sName = (string)objData["customers"][1]["Name"];
    int iAge = (int)objData["customers"][1]["Age"];
}

private string FetchJSONData()
{
    WebRequest req = WebRequest.Create("https://api.website.com");
    string sAPICredentials = "username" + ":" + "password";
    req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(sAPICredentials)));

    try
    {
        WebResponse res = req.GetResponse();

        Stream rcvStream = res.GetResponseStream();
        StreamReader rdrStream = new StreamReader(rcvStream, Encoding.UTF8);

        string JSONResponse = rdrStream.ReadToEnd();

        return JSONResponse;
    }
    catch (WebException we)
    {
        var response = we.Response as HttpWebResponse;

        if (response.StatusCode == HttpStatusCode.Forbidden)
        {
            // Deal with error
        }
    }
}

这是一个简化的示例,您应该使用此信息填充类,但这应该可以帮助您开始检索数据。