将JSON反序列化为List<>不适用于C#

时间:2012-09-13 15:20:30

标签: c# json serialization

这是我从流中获得的JSON,并转换为字符串。

"{\"data\":[{\"thread_id\":\"1111155552222\",\"recipients\":[123123,456456],\"message_count\":2100},{\"thread_id\":\"1111155553333\",\"recipients\":[123124,456457],\"message_count\":4851},{\"thread_id\":\"1111155554444\",\"recipients\":[123125,456458],\"message_count\":435}]}"

public class DataContainer
{
    List<data> data { get; set; }
}

public class data
{
    public string thread_id { get; set; }
    public long[] recipients { get; set; }
    public int message_count { get; set; }
}

JavaScriptSerializer ser = new JavaScriptSerializer();

DataContainer data = ser.Deserialize<DataContainer>(json);

我在数据上变为空,它似乎没有反序列化。 json的业余爱好者。对此已经头疼。

谢谢!


获取JSON字符串

WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader reader = new StreamReader(stream, encode);
string json = reader.ReadToEnd();

1 个答案:

答案 0 :(得分:0)

您的“ JSON从流中获得并转换为字符串 ”似乎已被序列化两次。

ASP.NET自动JSON序列化您的服务方法的响应,即使它们的结果是对象或对象集合

您应该能够直接使用它而无需序列化/反序列化。

类似的东西:

//Assuming GetJson() returns a JSON string, which you can use directly 
DataContainer data = GetJson();

请检查:http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/

此外:Reading from JSON, data not displayed