对C#自定义对象的Json响应

对C#自定义对象的Json响应,c#,asp.net,json,C#,Asp.net,Json,我正在调用Json webservice并获得以下Json { "Content": { "CallId": "345353-981b-41a8-a108-a5d6891a7987", "Detail": { "ConversationId": "345353-981b-41a8-a108-a5d6891a7987", "UserId": "d232ad07-3fb6-4ecd-85f7-1c41a8c430

我正在调用Json webservice并获得以下Json

{
    "Content": {
        "CallId": "345353-981b-41a8-a108-a5d6891a7987",
        "Detail": {
            "ConversationId": "345353-981b-41a8-a108-a5d6891a7987",
            "UserId": "d232ad07-3fb6-4ecd-85f7-1c41a8c43013",
            "Region": "beta.us",
            "GroupId": "CT-VIP",
            "WalletId": "d232ad07-3fb6-4ecd-85f7-1c41a8c43013",
            "TrunkId": "d232ad07-3fb6-4ecd-85f7-1c41a8c43013"
        },
        "CallService": {
            "Region": "beta.us",
            "Id": "764bac3af1d84c7db8fe49b2f76e64c0"
        }
    },
    "Status": "OK"
}
我使用以下代码发出请求并获得响应:

public string MakeCallTrucnkCall(string url)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Headers.Add("X-Client:" + "dfsdfs; dsfsdfsf; 151.1.1; 1");
        request.Headers.Add("X-Authenticator-Session:" + "code here");

        try
        {
            WebResponse response = request.GetResponse();

            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                return reader.ReadToEnd();                 
            }
        }
        catch (WebException ex)
        {
            WebResponse errorResponse = ex.Response;
            using (Stream responseStream = errorResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                String errorText = reader.ReadToEnd();

                // log errorText
            }
            throw;
        }
    }
{
    "Status": "ERR",
    "Errors": [
        {
            "Code": "Err_Auth_NoInfo"
        }
    ]
}
如果出现错误,我将得到以下响应:

public string MakeCallTrucnkCall(string url)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Headers.Add("X-Client:" + "dfsdfs; dsfsdfsf; 151.1.1; 1");
        request.Headers.Add("X-Authenticator-Session:" + "code here");

        try
        {
            WebResponse response = request.GetResponse();

            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                return reader.ReadToEnd();                 
            }
        }
        catch (WebException ex)
        {
            WebResponse errorResponse = ex.Response;
            using (Stream responseStream = errorResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                String errorText = reader.ReadToEnd();

                // log errorText
            }
            throw;
        }
    }
{
    "Status": "ERR",
    "Errors": [
        {
            "Code": "Err_Auth_NoInfo"
        }
    ]
}
这将返回我正在使用reader.ReadToEnd转换为字符串的响应。但我想将此响应转换为自定义对象。我在某个地方读到,我可以使用Javascript序列化程序类,但是这个json应该填充我的类的哪些属性

我需要像下面这样上课吗

public class APIResponse{
public Content {get;set;}
public CallId {get;set;}
public ConversationId {get;set;}
public Detail {get;set;}
public UserId {get;set;}
public Region{get;set;}
}
还是会有所不同?我不确定json是如何映射到自定义对象的,我应该具有哪些属性,以及如何在自定义对象上获得形式响应而不是字符串响应。请建议。

您的C#类应该看起来像您的JSON数据:

public class APIResponse
{
    public APIContent Content { get; set; }
    public string Status { get; set; }
}

public class APIContent
{
    public string CallID { get; set; }
    public APIDetail Detail { get; set; }
    public APICallService CallService { get; set; }
}

然后可以反序列化:

JavaScriptSerializer serializer = new JavaScriptSerializer();
APIResponse response = serializer.Deserialize<APIResponse>(request);
JavaScriptSerializer serializer=新的JavaScriptSerializer();
APIResponse=序列化程序。反序列化(请求);