如何取消json的名称,json包含实体列表以及其他属性

本文关键字:json 包含 实体 列表 属性 及其他 何取消 取消 | 更新日期: 2023-09-27 18:27:47

我有一个由MyFacebookClass列表组成的json,当我反序列化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);

如何取消json的名称,json包含实体列表以及其他属性

您发布的代码中没有CustomObject的构造函数。基本上,构造函数是一个没有返回类型的方法,并且与声明类的名称相同。您的MyFacebookClass确实有一个构造函数,这是关于构造函数的MSDN文档。

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

工作非常好。我在您的代码中发现的唯一问题是,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);
    }