Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将空对象c#序列化为JSON_C#_Json_Serialization_Javascriptserializer - Fatal编程技术网

如何将空对象c#序列化为JSON

如何将空对象c#序列化为JSON,c#,json,serialization,javascriptserializer,C#,Json,Serialization,Javascriptserializer,我有一个带符号的对象: public class CompanyTeam { public string companyGuid { get; set; } public string companyId { get; set; } } public class Team { public string teamGuid { get; set; } public string teamName { get; set; } public CompanyTe

我有一个带符号的对象:

public class CompanyTeam
{
    public string companyGuid { get; set; }
    public string companyId { get; set; }
}

public class Team
{
    public string teamGuid { get; set; }
    public string teamName { get; set; }
    public CompanyTeam company { get; set; }
}
团队对象包含除CompanyTeam之外的数据。序列化我的对象时

json = new JavaScriptSerializer().Serialize(teamObject);
返回

{
    "teamGuid": "GUIDdata",
    "teamName": "nameData",
    "company": null,
}
我尝试实例化CompanyTeam对象,但返回的对象数据为空:

{
    "teamGuid": "GUIDdata",
    "teamName": "nameData",
    "company": {
                  "companyGuid" : null,
                  "companyId" : null
               },
}
你怎么能得到这个结果?有什么想法吗

{
    "teamGuid": "GUIDdata",
    "teamName": "nameData",
    "company": {},
}

您可以尝试以下方法来实现您想要的并继续使用JavaScriptSerializer:

public class Team
{
    public Team()
    {
        teamGuid = "I have a value!";
        teamName = "me too!";
    }

    public Team(CompanyTeam company) : this()
    {
        this.company = company;
    }
    public string teamGuid { get; set; }
    public string teamName { get; set; }
    public CompanyTeam company { get; set; }

    public dynamic GetSerializeInfo() => new
    {
        teamGuid,
        teamName,
        company = company ?? new object()
    };
}
还有你们公司的班机

  public class CompanyTeam
    {
        public CompanyTeam()
        {
            companyGuid = "someGuid";
            companyId = "someId";
        }
        public string companyGuid { get; set; }
        public string companyId { get; set; }
    }
您可以编写一个返回动态的方法,在该方法中,您可以返回不为null的公司,也可以返回一个新对象。测试:

static void Main(string[] args)
        {
            var teamObj = new Team();
            var json = new JavaScriptSerializer().Serialize(teamObj.GetSerializeInfo());
            Console.WriteLine(json);
            Console.ReadLine();
        }
以及输出:

{“teamGuid”:“我有价值!”,“teamName”:“我也是!”,“公司”:{}

如果您使用提供非空公司的constructur,则您会得到:

{“teamGuid”:“我有一个值!”,“teamName”:“我也是!”,“公司”:{“companyGuid”:“someGuid”,“companyId”:“someId”}


希望这有帮助

您可以尝试以下方法来实现您想要的并继续使用JavaScriptSerializer:

public class Team
{
    public Team()
    {
        teamGuid = "I have a value!";
        teamName = "me too!";
    }

    public Team(CompanyTeam company) : this()
    {
        this.company = company;
    }
    public string teamGuid { get; set; }
    public string teamName { get; set; }
    public CompanyTeam company { get; set; }

    public dynamic GetSerializeInfo() => new
    {
        teamGuid,
        teamName,
        company = company ?? new object()
    };
}
还有你们公司的班机

  public class CompanyTeam
    {
        public CompanyTeam()
        {
            companyGuid = "someGuid";
            companyId = "someId";
        }
        public string companyGuid { get; set; }
        public string companyId { get; set; }
    }
您可以编写一个返回动态的方法,在该方法中,您可以返回不为null的公司,也可以返回一个新对象。测试:

static void Main(string[] args)
        {
            var teamObj = new Team();
            var json = new JavaScriptSerializer().Serialize(teamObj.GetSerializeInfo());
            Console.WriteLine(json);
            Console.ReadLine();
        }
以及输出:

{“teamGuid”:“我有价值!”,“teamName”:“我也是!”,“公司”:{}

如果您使用提供非空公司的constructur,则您会得到:

{“teamGuid”:“我有一个值!”,“teamName”:“我也是!”,“公司”:{“companyGuid”:“someGuid”,“companyId”:“someId”}


希望这有帮助

我有点迷糊了你想要的一半。哪一个表示您期望/想要的内容?我不知道如何使用JavaScriptSerializer,甚至不知道是否可以使用JavaScriptSerializer实现这一点,但如果使用JSON.net(),则可以在序列化()时忽略具有空值的属性。您还可以调整基本上任何内容,因此在序列化JSON时它通常是首选项。@Trey我需要序列化的结果为“company”:{},它在JSONY中表示空对象。您正在使用
JavaScriptSerializer
,并且希望在
CompanyTeam
的属性为空时完全忽略它们。不幸的是,没有内置的功能,相反,您需要使用
JavaScriptConverter
,如所示。如果
公司
null
,我知道没有JSON序列化程序可以输出您所期望的内容;我希望看到
“company”:null,或者根本看不到任何东西。你能不能让它。。。是否不为空
<代码>如果(obj.company==null)ob.company=new companytem()应该解决这个问题,不是吗?我有点迷失在你想要的半个方向上。哪一个表示您期望/想要的内容?我不知道如何使用JavaScriptSerializer,甚至不知道是否可以使用JavaScriptSerializer实现这一点,但如果使用JSON.net(),则可以在序列化()时忽略具有空值的属性。您还可以调整基本上任何内容,因此在序列化JSON时它通常是首选项。@Trey我需要序列化的结果为“company”:{},它在JSONY中表示空对象。您正在使用
JavaScriptSerializer
,并且希望在
CompanyTeam
的属性为空时完全忽略它们。不幸的是,没有内置的功能,相反,您需要使用
JavaScriptConverter
,如所示。如果
公司
null
,我知道没有JSON序列化程序可以输出您所期望的内容;我希望看到
“company”:null,或者根本看不到任何东西。你能不能让它。。。是否不为空
<代码>如果(obj.company==null)ob.company=new companytem()应该解决这个问题,不是吗?