相关疑难解决方法(0)

在.NET JSON序列化期间忽略字段; 类似于[XmlIgnore]?

我有一个POCO类,它作为.NET 3.5 sp1中的JSON字符串发送到浏览器.我只是使用默认的JSON序列化,我有一些我想忽略的字段.我想在它们上面添加类似于[System.Xml.Serialization.XmlIgnore]的属性,以便它们不被序列化.

.net c# asp.net-mvc serialization json

78
推荐指数
2
解决办法
5万
查看次数

序列化属性,但不要在Json.Net中反序列化属性

虽然我发现了许多方法来反序列化特定属性,同时阻止它们序列化,但我正在寻找相反的行为.

我发现有很多问题要求反过来:

使用json.net使属性反序列化但不序列化

我可以指示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)

c# serialization json json.net

14
推荐指数
1
解决办法
9082
查看次数

我可以指示Json.NET反序列化,但不能序列化特定属性吗?

我有一个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反序列化,但不能序列化特定属性?

c# json.net

11
推荐指数
1
解决办法
4408
查看次数

json从遗留属性名称反序列化

如何设置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"

c# json json.net json-deserialization

6
推荐指数
2
解决办法
973
查看次数

为旧的 JSON 结构添加向后兼容性支持

我为 android 开发了一个应用程序,它将 JSON 文件中的序列化域模型存储到本地存储。现在的问题是,有时我对域模型(新功能)进行更改,并希望能够轻松地从本地存储加载 JSON 文件的先前结构。我怎样才能做到这一点?

我想匿名反序列化对象并使用自动映射器,但我想在走这条路之前先听听别人的想法。

如果需要域模型的代码示例(之前和之后),我会提供。谢谢大家。

.net c# json json.net xamarin

6
推荐指数
1
解决办法
1921
查看次数

Newtonsoft Json.NET不序列化[过时]属性

有没有一种方法可以将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}

c# json.net

2
推荐指数
1
解决办法
121
查看次数