【问题标题】:convert json to c# list of objects将 json 转换为 c# 对象列表
【发布时间】:2012-02-13 02:36:02
【问题描述】:

Json 字符串:

{"movies":[{"id":"1","title":"Sherlock"},{"id":"2","title":"The Matrix"}]}

C#类:

public class Movie {
  public string title { get; set; }
}

C# 将 json 转换为 C# 电影列表:

JavaScriptSerializer jss = new JavaScriptSerializer();
List<Movie> movies = jss.Deserialize<List<Movie>>(jsonString);

我的 movies 变量最终是一个 count = 0 的空列表。我错过了什么吗?

【问题讨论】:

  • 也许您应该将第一个 json 节点命名为 Movie 以便它对应于 Movie 类?

标签: c# json javascriptserializer


【解决方案1】:

您的 c# 类映射与 json 结构不匹配。

解决方案:

class MovieCollection {
        public IEnumerable<Movie> movies { get; set; }
}

class Movie {
        public string title { get; set; }
}

class Program {
        static void Main(string[] args)
        {
                string jsonString = @"{""movies"":[{""id"":""1"",""title"":""Sherlock""},{""id"":""2"",""title"":""The Matrix""}]}";
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                MovieCollection collection = serializer.Deserialize<MovieCollection>(jsonString);
        }
}

【讨论】:

  • 我用过这个,它说:“集合类(MovieCollection)不支持数组的反序列化。请帮助!
【解决方案2】:

如果你想匹配 C# 结构,你可以像这样改变 JSON 字符串:

{[{"id":"1","title":"Sherlock"},{"id":"2","title":"The Matrix"}]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    相关资源
    最近更新 更多