如何将空对象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()代码>应该解决这个问题,不是吗?