我有一个POCO类,它作为.NET 3.5 sp1中的JSON字符串发送到浏览器.我只是使用默认的JSON序列化,我有一些我想忽略的字段.我想在它们上面添加类似于[System.Xml.Serialization.XmlIgnore]的属性,以便它们不被序列化.
虽然我发现了许多方法来反序列化特定属性,同时阻止它们序列化,但我正在寻找相反的行为.
我发现有很多问题要求反过来:
我可以指示Json.NET反序列化,但不能序列化特定属性吗?
JSON.Net - 仅在序列化时使用JsonIgnoreAttribute(但在反序列化时不使用)
如何序列化特定属性,但阻止它反序列化回POCO?是否有可用于装饰特定属性的属性?
基本上我正在寻找与反序列化的ShouldSerialize*方法相当的方法.
我知道我可以写一个自定义转换器,但这似乎有点矫枉过正.
编辑:
这是一个更多的背景.这背后的原因是我的班级看起来像:
public class Address : IAddress
{
/// <summary>
/// Gets or sets the two character country code
/// </summary>
[JsonProperty("countryCode")]
[Required]
public string CountryCode { get; set; }
/// <summary>
/// Gets or sets the country code, and province or state code delimited by a vertical pipe: <c>US|MI</c>
/// </summary>
[JsonProperty("countryProvinceState")]
public string CountryProvinceState
{
get
{
return string.Format("{0}|{1}", this.CountryCode, this.ProvinceState);
}
set
{
if (!string.IsNullOrWhiteSpace(value) && value.Contains("|")) …Run Code Online (Sandbox Code Playgroud) 我有一个AngularJS + MVC 5 + Web API 2应用程序,允许用户在浏览器中管理对象集合,并在单击"保存"按钮时立即提交所有更改.在进行更改时,会向JavaScript对象添加一个或多个属性:IsAdded,IsUpdated,IsRemoved.在服务器端检查属性以确定在持久化模型时要执行的操作.
该模型通过Web API使用Json.NET提供,基类为:
public class CollectionItemViewModel : ICollectionItem
{
public bool IsAdded { get; set; }
public bool IsUpdated { get; set; }
public bool IsRemoved { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但增加了我的序列化JSON.我可以选择不使用ShouldSerialize序列化这三个属性,但这也会阻止它们反序列化.
public bool ShouldSerializeIsAdded()
{
return false;
}
public bool ShouldSerializeIsUpdated()
{
return false;
}
public bool ShouldSerializeIsRemoved()
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用Json.NET反序列化,但不能序列化特定属性?
如何设置Newtonsoft.Json以使用旧成员名称反序列化对象,但使用当前成员名称对其进行序列化?
这是一个需要序列化和反序列化的示例对象.我给了一个属性一个属性,其中包含过去可能已被序列化的名称列表.
[DataContract]
class TestObject {
[LegacyDataMemberNames("alpha", "omega")]
[DataMember(Name = "a")]
public int A { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想json序列化始终使用名称"a",但能够从任何遗留名称反序列化到一个属性,包括"alpha"和"omega"以及当前名称"a"
我为 android 开发了一个应用程序,它将 JSON 文件中的序列化域模型存储到本地存储。现在的问题是,有时我对域模型(新功能)进行更改,并希望能够轻松地从本地存储加载 JSON 文件的先前结构。我怎样才能做到这一点?
我想匿名反序列化对象并使用自动映射器,但我想在走这条路之前先听听别人的想法。
如果需要域模型的代码示例(之前和之后),我会提供。谢谢大家。
有没有一种方法可以将Json.NET配置为不序列化具有[Obsolete]属性的属性?
例如
public class Foo
{
public int Id { get; set; }
[Obsolete]
public int Age { get; set; }
}
var foo = new Foo { Id = 123, Age = 23 };
var json = JsonConvert.SerializeObject(foo);
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,json是 {"Id":123,"Age":23}
我想要 {"Id":123}