相关疑难解决方法(0)

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

我们有一些配置文件是通过使用Json.net序列化C#对象生成的.

我们希望将序列化类的一个属性从简单的枚举属性迁移到类属性.

一个简单的方法是将旧的enum属性保留在类上,并在我们加载配置时安排Json.net读取此属性,但是当我们下次序列化对象时不要再次保存它.我们将分别从旧枚举中处理生成新类.

是否有任何简单的方法来标记(例如,使用属性)C#对象的属性,以便Json.net仅在序列化时忽略它,但在反序列化时要注意它?

c# json.net

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

我可以指示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.net对对象属性进行条件序列化/反序列化

我有一个类定义如下的场景:

class MyObject
{
    public DataDictionary MyObjectData { get; set; }

    public bool ShouldSerializeMyObjectData() { return true; }
    public bool ShouldDeserializeMyObjectData() { return false; }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用JSON.net序列化/反序列化该类时,它会考虑ShouldSerialize,但不会考虑ShouldDeserialize.

根据文档,两者都应该像我猜的那样工作.有什么特别值得我知道的吗?更一般地说,我应该如何处理我想要序列化属性但不反序列化它的场景?

我正在使用,Json.NET 8.0如果这很重要.

谢谢你的帮助.

c# json.net

10
推荐指数
1
解决办法
6387
查看次数

为什么 Json.NET 试图反序列化我的 get only 属性?

我一直在尝试以这样的方式序列化和反序列化我的对象,以便我能够指定要序列化但不反序列化某些属性。

示例代码如下:

public interface ISupYo
{
    string Hi { get; }
}
public class SupYo : ISupYo
{
    public string Hi { get; } = "heya";
}

public interface ISup
{
    int hiyo { get; }
}
public class Sup : ISup
{ 
    public Sup(int hiyo)
    {
        this.hiyo = hiyo;
    }

    public int hiyo { get; }
    public ISupYo yo => new SupYo();
}

var myNewSup = JsonConvert.SerializeObject(new Sup(2));
var mySup = JsonConvert.DeserializeObject<Sup>(myNewSup);
Run Code Online (Sandbox Code Playgroud)

如果我从类中删除构造函数,Sup一切都很好。

但是由于 json.net 尝试构建接口 ISupYo,原样反序列化失败并出现以下错误... …

c# serialization json json.net

3
推荐指数
1
解决办法
2816
查看次数

标签 统计

c# ×4

json.net ×4

json ×1

serialization ×1