将复杂json对象反序列化为自定义数据模型c#

将复杂json对象反序列化为自定义数据模型c#,c#,.net,json,json.net,deserialization,C#,.net,Json,Json.net,Deserialization,在C#中将json数据转换为自定义模型时,我被绊倒了。json数据的结构如下所示: { "id": "100002231955291", "albums": { "data": [ { "id": "103570756393989", "name": "xyz", "photos": { "data": [ { "id": "7075639

在C#中将json数据转换为自定义模型时,我被绊倒了。json数据的结构如下所示:

{
  "id": "100002231955291", 
  "albums": {
    "data": [
      {
        "id": "103570756393989", 
        "name": "xyz",
        "photos": {
         "data": [
            {
                  "id": "707563939dsf89", 
                  "picture": "htp:// ssdsome data"
            }, 
            {
                   "id": "7075dfsd6393989", 
                   "picture": "htp:// ssdsome data"
            },
............
.....................   .. and so on    ......
我尝试了反序列化上述json数据的代码:

var parsed = JsonConvert.DeserializeObject<FacebookModel>(data.ToString());
var parsed=JsonConvert.DeserializeObject(data.ToString());
但问题是rootObject还包含一些无法转换(反序列化)的Json数组。我的模型(poco类)是:

公共类FacebookModel
{
公共字符串id{get;set;}
列出相册{get;set;}
}
公共类模型
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公开列表照片{get;set;}
}
公共类图片模型
{
公共字符串id{get;set;}
公共字符串图片{get;set;}
}
错误:

无法将当前JSON对象(例如{“name”:“value”})反序列化为类型“System.Collections.Generic.List`1[Bricks.Common.CustomModels.PictureModel]”,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。
若要修复此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为可以从JSON对象反序列化的正常.NET类型(例如,不是integer之类的基元类型,也不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化。

任何帮助都将不胜感激。谢谢

相册和照片实际上是对象,而不是数组

比如:

public class FacebookModel
{
    public string id { get; set; }
    public AlbumModel albums { get; set; }
}

public class AlbumModel
{
    public List<AlbumData> data {get;set;}
}

public class AlbumData
{
    public string id { get; set; }
    public string name { get; set; }
    public PictureModel photos { get; set; }
}

public class PictureModel
{
    public List<PictureData> data {get;set;}
}

public class PictureData
{
    public string id { get; set; }
    public string picture { get; set; }
}
公共类FacebookModel
{
公共字符串id{get;set;}
公共相册模型相册{get;set;}
}
公共类模型
{
公共列表数据{get;set;}
}
公共类数据
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共图片模型照片{get;set;}
}
公共类图片模型
{
公共列表数据{get;set;}
}
公共类图片数据
{
公共字符串id{get;set;}
公共字符串图片{get;set;}
}

等等。

相册和照片实际上是对象,而不是数组

比如:

public class FacebookModel
{
    public string id { get; set; }
    public AlbumModel albums { get; set; }
}

public class AlbumModel
{
    public List<AlbumData> data {get;set;}
}

public class AlbumData
{
    public string id { get; set; }
    public string name { get; set; }
    public PictureModel photos { get; set; }
}

public class PictureModel
{
    public List<PictureData> data {get;set;}
}

public class PictureData
{
    public string id { get; set; }
    public string picture { get; set; }
}
公共类FacebookModel
{
公共字符串id{get;set;}
公共相册模型相册{get;set;}
}
公共类模型
{
公共列表数据{get;set;}
}
公共类数据
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共图片模型照片{get;set;}
}
公共类图片模型
{
公共列表数据{get;set;}
}
公共类图片数据
{
公共字符串id{get;set;}
公共字符串图片{get;set;}
}

等等。

相册和照片实际上是对象,而不是数组

比如:

public class FacebookModel
{
    public string id { get; set; }
    public AlbumModel albums { get; set; }
}

public class AlbumModel
{
    public List<AlbumData> data {get;set;}
}

public class AlbumData
{
    public string id { get; set; }
    public string name { get; set; }
    public PictureModel photos { get; set; }
}

public class PictureModel
{
    public List<PictureData> data {get;set;}
}

public class PictureData
{
    public string id { get; set; }
    public string picture { get; set; }
}
公共类FacebookModel
{
公共字符串id{get;set;}
公共相册模型相册{get;set;}
}
公共类模型
{
公共列表数据{get;set;}
}
公共类数据
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共图片模型照片{get;set;}
}
公共类图片模型
{
公共列表数据{get;set;}
}
公共类图片数据
{
公共字符串id{get;set;}
公共字符串图片{get;set;}
}

等等。

相册和照片实际上是对象,而不是数组

比如:

public class FacebookModel
{
    public string id { get; set; }
    public AlbumModel albums { get; set; }
}

public class AlbumModel
{
    public List<AlbumData> data {get;set;}
}

public class AlbumData
{
    public string id { get; set; }
    public string name { get; set; }
    public PictureModel photos { get; set; }
}

public class PictureModel
{
    public List<PictureData> data {get;set;}
}

public class PictureData
{
    public string id { get; set; }
    public string picture { get; set; }
}
公共类FacebookModel
{
公共字符串id{get;set;}
公共相册模型相册{get;set;}
}
公共类模型
{
公共列表数据{get;set;}
}
公共类数据
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共图片模型照片{get;set;}
}
公共类图片模型
{
公共列表数据{get;set;}
}
公共类图片数据
{
公共字符串id{get;set;}
公共字符串图片{get;set;}
}

依此类推。

此方法适用于任何复杂对象:

示例用法:
var complexObject=GetObjectFromJson(jsonString,typeof(YourComplexObject))

使用System.Runtime.Serialization.Json;
公共静态T GetObjectFromJson(字符串jsonString,类型)
{
var dcSerializer=新的DataContractJsonSerializer(类型);
使用(var stream=newmemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
返回(T)dcSerializer.ReadObject(流);
}
}

此方法适用于任何复杂对象:

示例用法:
var complexObject=GetObjectFromJson(jsonString,typeof(YourComplexObject))

使用System.Runtime.Serialization.Json;
公共静态T GetObjectFromJson(字符串jsonString,类型)
{
var dcSerializer=新的DataContractJsonSerializer(类型);
使用(var stream=newmemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
返回(T)dcSerializer.ReadObject(流);
}
}

此方法适用于任何复杂对象:

示例用法:
var complexObject=GetObjectFromJson(jsonString,typeof(YourComplexObject))

使用System.Runtime.Serialization.Json;
公共静态T GetObjectFromJson(字符串jsonString,类型)
{
var dcSerializer=新的DataContractJsonSerializer(类型);
使用(var stream=newmemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
返回(T)dcSerializer.ReadObject(流);
}
}

此方法适用于任何复杂对象:

示例用法:
var complexObject=GetObjectFromJson(jsonString,typeof(YourComplexObject))

使用System.Runtime.Serialization.Json;
公共静态T GetObjectFromJson(字符串jsonString,类型)
{
var dcSerializer=新的DataContractJsonSerializer(类型);
使用(var)流=