无法使用C#Rest Sharp反序列化Json

时间:2019-05-03 09:07:42

标签: c# json.net

我无法通过C#反序列化Json对象。

但是,在反序列化数据时,我收到一条错误消息:

Json Call返回的内容:

[\r\n  {\r\n    \"postLogoutRedirectUri\": \"https://demo-pec.stage.reds.rxweb-pre.com/services/rxauthlogout\",\r\n    \"redirectUri\": \"https://demo-pec.stage.reds.rxweb-pre.com/services/rxauth\"\r\n  },\r\n  {\r\n    \"postLogoutRedirectUri\": \"https://stage.ecommsummitexpo.com/services/rxauthlogout\",\r\n    \"redirectUri\": \"https://stage.ecommsummitexpo.com/services/rxauth\"\r\n  },\r\n  {\r\n    \"postLogoutRedirectUri\": \"https://eventportal-new-stage.aem.rxweb-pre.com/services/rxauthlogout\"\r\n  }\r\n]

我的RestSharp呼叫:

public Rootobject getRedirectUris(string redirectUriGetUrl)
{
    var client = new RestClient(redirectUriGetUrl);
    var request = new RestRequest(Method.GET);
    request.AddHeader("cache-control", "no-cache");
    request.AddHeader("accept", "text/plain");
    IRestResponse test = client.Execute(request);

    Rootobject object1 = JsonConvert.DeserializeObject<Rootobject>(test.Content); ;

    return object1;
}

我的C#类

public class Rootobject
{
    public RedirectUriGetDto[] redirectUris { get; set; }
}

public class RedirectUriGetDto
{
    public string postLogoutRedirectUri { get; set; }
    public string redirectUri { get; set; }
}

我收到异常消息:阅读完JSON内容后,遇到了其他文本:。路径”,第5行,位置4。

任何想法为什么会这样?是由于上述无效的Json吗?

任何帮助将不胜感激。

谢谢 罗布

2 个答案:

答案 0 :(得分:4)

因为您的JSON数据是数组,所以不反对。 您可以尝试使用IEnumerable<RedirectUriGetDto>代替Rootobject

var result = JsonConvert.DeserializeObject<IEnumerable<RedirectUriGetDto>>(test.Content); 

答案 1 :(得分:0)

您必须在Json结果中添加父对象:

    var object1 = JsonConvert.DeserializeObject<Rootobject>(string.Format ("{{\"redirectUris\" :{0}}}", test.Content));