如何将json格式的字符串拆分为.net对象以进行反序列化

本文关键字:对象 net 反序列化 拆分 json 格式 字符串 | 更新日期: 2023-09-27 18:23:43

主题听起来不清楚,但逻辑非常简单。我有一个返回的json格式的响应数据。我想将它反序列化为我已经定义的.net对象。我使用JavaScriptSerializer类Deserialize方法,它要求参数为字符串。现在我的响应数据是json格式的,并且有多个根。

我的代码是

 WebRequest request = WebRequest.Create  ("https://xxx.xxxxxx.com/xxxxx");
    request.Method = "GET";
    request.ContentType = "application/json";
    var response = (HttpWebResponse)request.GetResponse();
    using (var streamReader = new StreamReader(response.GetResponseStream()))
    {
        var responseText = streamReader.ReadToEnd();
    }

responseText值为

[
 {
 "webinarKey":5303085652037254656,
 "subject":"Test+Webinar+One",
 "description":"Test+Webinar+One+Description",
 "organizerKey":73563532324,
 "times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
 },
 {
 "webinarKey":9068582024170238208,
 "name":"Test+Webinar+Two",
 "description":"Test Webinar Two Description",
 "organizerKey":73563532324,
 "times":[{"startTime":"2011-04-26T17:00:00Z","endTime":"2011-04-26T18:00:00Z"}]
 }
 ]

我使用以下代码将responseText反序列化为我定义的.net对象。

JavaScriptSerializer ser = new JavaScriptSerializer();
Webinar w=ser.Deserialize<Webinar>(responseText);

错误显示responseText是一个数组,而不是字符串。那么如何拆分responseText?我认为在这里使用string.split()方法是不合适的。

如何将json格式的字符串拆分为.net对象以进行反序列化

您的响应文本实际上是一个json数组(包含2个元素),如[]字符所示。尝试以下操作:

Webinar[] w=ser.Deserialize<Webinar[]>(responseText);

您尝试过:List<Webinar> w=ser.Deserialize<List<Webinar>>(responseText);吗?