Как десериализовать JSON, который содержит список сущностей, а также другие свойства - PullRequest
0 голосов
/ 13 марта 2012

У меня есть json, содержащий список MyFacebookClass, и когда я десериализирую список MyFacebookClass, я получаю ошибку, что для CustomObject не определен пустой конструктор, хотя я уже определил конструктор, как показано ниже, поэтому, пожалуйста, помогите мне.

    public class MyFacebookClass
    {
    public MyFacebookClass
    {
      data =new List<CustomObject>();
    }
        public string Name{get;set;}
        public int Id{get;set;}
        public List<CustomObject> data {get;set;}
    }

    public class CustomObject 
    {
    public CustomObject()
    {
    }
      public string id {get;set;}
      public string name {get;set;}
    }

Я использую:

    List<MyFacebookClass> routes_list = new List<MyFacebookClass>();
    JavaScriptSerializer jSerializer = new JavaScriptSerializer();
    routes_list = jSerializer.Deserialize<List<MyFacebookClass>>(json);

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

Работает отлично. Единственная проблема, которую я обнаружил в вашем коде: конструктор класса MyFacebookClass должен иметь квадратные скобки

public class MyFacebookClass
{
    public MyFacebookClass()
    {
        data = new List<CustomObject>();
    }

    public string Name { get; set; }
    public int Id { get; set; }
    public List<CustomObject> data { get; set; }
}

public class CustomObject
{
    public CustomObject()
    {
        /*  now you have a constructor */
    }
    public string id { get; set; }
    public string name { get; set; }
}

public class Main
{
    public List<MyFacebookClass> Deserialize(string json)
    {
        List<MyFacebookClass> routes_list = new List<MyFacebookClass>();
        JavaScriptSerializer jSerializer = new JavaScriptSerializer();
        return jSerializer.Deserialize<List<MyFacebookClass>>(json); 
    }
}

[TestMethod ()]

    public void doSomethingTest()
    {
        Main target = new Main(); // TODO: Initialize to an appropriate value
        Assert.AreEqual(target.Deserialize(""), null);
    }
0 голосов
/ 13 марта 2012

у вас нет конструктора для CustomObject в коде, который вы опубликовали.по сути, конструктор - это метод, который не имеет возвращаемого типа и имеет то же имя, что и объявленный класс.У вас есть конструктор для вашего MyFacebookClass . Вот документация MSDN по конструкторам.

public class CustomObject 
{
  public CustomObject()
  {
    /*  now you have a constructor */
  }
  public string id {get;set;}
  public string name {get;set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...