如何反序列化此JSON

时间:2012-08-30 12:59:18

标签: c# json asp.net-mvc-3

我有这个代码反序列化这个json但我一直收到这个错误:

  

“无法将System.String类型的对象转换为类型   Namespace.Models.Url“

。 json结构如下:

  

[{fileUrl:“localhost / ContentManager / get / ovYWB0 / 81 / wallpaper”},{   fileUrl:“localhost / ContentManager / get / AcjwO0 / 81 / wallpaper”},{   fileUrl:“localhost / ContentManager / get / HCR0q0 / 81 / wallpaper”}    ]

我要映射的类如下:

public class Url
{
    public string FileUrl { get; set; }
}

public class Response
{
    public Url FileUrl { get; set; }
}

反序列化代码如下:

var serializer = new JavaScriptSerializer();
IList<MTContribute> data = new List<MTContribute>();

var items = serializer.Deserialize<List<Response>>(json);
foreach (var item in items)
{
    var newData = new MTContribute
    {
        DateCreated = DateTime.Today,
        IsActive = Convert.ToBoolean("True"),
        MTContributeCategoryId = Category.MTContributeCategoryId,
        Url = item.FileUrl.FileUrl
    };

    data.Add(newData);
}

1 个答案:

答案 0 :(得分:0)

根据你当前的json结构,这应该可行

var items = serializer.Deserialize<List<Url>>(json); // Url instead of Response

如果这对您不起作用,则必须更改json结构以反映Response类的结构。

除非我错过了什么,否则这是必要的json结构

[{ fileUrl:{ fileUrl: "localhost/ContentManager/get/ovYWB0/81/wallpaper" }}]
相关问题