C# 将对象的一部分序列化为json
我有一个C#中类似的类:C# 将对象的一部分序列化为json,c#,json,serialization,C#,Json,Serialization,我有一个C#中类似的类: 有办法吗?如果您使用的是JSON.Net,您可以添加一个方法: public bool ShouldSerializeMyObjectList() { return false; } 或者,您可以在不希望序列化的属性上方使用JsonIgnore,但这也会阻止它们被反序列化 编辑: JSON.Net自动查找带有签名的方法public bool ShouldSerializeProperty(),并将其用作是否应序列化特定属性的逻辑。以下是相关文件: 以下是一个
有办法吗?如果您使用的是JSON.Net,您可以添加一个方法:
public bool ShouldSerializeMyObjectList()
{
return false;
}
或者,您可以在不希望序列化的属性上方使用JsonIgnore
,但这也会阻止它们被反序列化
编辑:
JSON.Net自动查找带有签名的方法public bool ShouldSerializeProperty()
,并将其用作是否应序列化特定属性的逻辑。以下是相关文件:
以下是一个例子:
static void Main(string[] args)
{
var thing = new MyClass
{
Id = "ID",
Description = "Description",
Location = "Location",
MyObjectLists = new List<MyObject>
{
new MyObject { Name = "Name1" },
new MyObject { Name = "Name2" }
}
};
var json = JsonConvert.SerializeObject(thing);
Console.WriteLine(json);
Console.Read();
}
class MyClass
{
public string Id { get; set; }
public string Description { get; set; }
public string Location { get; set; }
public List<MyObject> MyObjectLists { get; set; }
public bool ShouldSerializeMyObjectLists()
{
return false;
}
}
class MyObject
{
public string Name { get; set; }
}
static void Main(字符串[]args)
{
var thing=newmyclass
{
Id=“Id”,
Description=“Description”,
Location=“Location”,
myObjectList=新列表
{
新的MyObject{Name=“Name1”},
新MyObject{Name=“Name2”}
}
};
var json=JsonConvert.SerializeObject(thing);
Console.WriteLine(json);
Console.Read();
}
类MyClass
{
公共字符串Id{get;set;}
公共字符串说明{get;set;}
公共字符串位置{get;set;}
公共列表MyObjectLists{get;set;}
公共bool应该序列化myObjectList()
{
返回false;
}
}
类MyObject
{
公共字符串名称{get;set;}
}
JSON输出如下所示:
{“Id”:“Id”,“Description”:“Description”,“Location”:“Location”}
如果您使用的是JSON.Net,则可以添加一个方法:
public bool ShouldSerializeMyObjectList()
{
return false;
}
或者,您可以在不希望序列化的属性上方使用JsonIgnore
,但这也会阻止它们被反序列化
编辑:
JSON.Net自动查找带有签名的方法public bool ShouldSerializeProperty()
,并将其用作是否应序列化特定属性的逻辑。以下是相关文件:
以下是一个例子:
static void Main(string[] args)
{
var thing = new MyClass
{
Id = "ID",
Description = "Description",
Location = "Location",
MyObjectLists = new List<MyObject>
{
new MyObject { Name = "Name1" },
new MyObject { Name = "Name2" }
}
};
var json = JsonConvert.SerializeObject(thing);
Console.WriteLine(json);
Console.Read();
}
class MyClass
{
public string Id { get; set; }
public string Description { get; set; }
public string Location { get; set; }
public List<MyObject> MyObjectLists { get; set; }
public bool ShouldSerializeMyObjectLists()
{
return false;
}
}
class MyObject
{
public string Name { get; set; }
}
static void Main(字符串[]args)
{
var thing=newmyclass
{
Id=“Id”,
Description=“Description”,
Location=“Location”,
myObjectList=新列表
{
新的MyObject{Name=“Name1”},
新MyObject{Name=“Name2”}
}
};
var json=JsonConvert.SerializeObject(thing);
Console.WriteLine(json);
Console.Read();
}
类MyClass
{
公共字符串Id{get;set;}
公共字符串说明{get;set;}
公共字符串位置{get;set;}
公共列表MyObjectLists{get;set;}
公共bool应该序列化myObjectList()
{
返回false;
}
}
类MyObject
{
公共字符串名称{get;set;}
}
JSON输出如下所示:
{“Id”:“Id”,“Description”:“Description”,“Location”:“Location”}
如果使用Newtonsoft JSON.NET
,则可以将[JsonIgnore]
属性应用于myobjectlist
属性
公共类MyClass
{
公共字符串Id{get;set;}
公共字符串说明{get;set;}
公共字符串位置{get;set;}
[JsonIgnore]
公共列表MyObjectLists{get;set;}
}
更新#1
是的,您可以避免[JsonIgnore]
属性。您可以编写自定义的JsonConverter
请参见此处的示例:
您还可以使用@GBree12中的
ShouldSerialize
解决方案。如果使用Newtonsoft Json.NET
,则可以将[JsonIgnore]
属性应用于myobjectlist
属性
公共类MyClass
{
公共字符串Id{get;set;}
公共字符串说明{get;set;}
公共字符串位置{get;set;}
[JsonIgnore]
公共列表MyObjectLists{get;set;}
}
更新#1
是的,您可以避免[JsonIgnore]
属性。您可以编写自定义的JsonConverter
请参见此处的示例:
您也可以使用@GBree12中的
ShouldSerialize
解决方案。但是如何将该函数与序列化一起使用呢?我应该把它作为一个论据还是什么?你实际上不需要做任何事情。Json.Net会自动查找带有签名的方法,并在序列化时使用这些方法。我将为一个示例添加代码。但如何在序列化中使用该函数呢?我应该把它作为一个论据还是什么?你实际上不需要做任何事情。Json.Net会自动查找带有签名的方法,并在序列化时使用这些方法。我将为一个示例添加代码。