C#自定义json序列化

C#自定义json序列化,c#,.net,json,serialization,C#,.net,Json,Serialization,这个班 class X{ public string a{get;set} public string b{get;set} } 是序列化的吗 {..., inst:{a:"value", b:"value"}, ...} 我需要像下面这样序列化类的对象: {..., inst: x, ...} 其中x是a+b 如何从类中自定义JSON序列化过程?签出Newton softs JSON序列化程序。它很甜 你有没有试过将a和b设为私有,然后做类似的事情 public stri

这个班

class X{
    public string a{get;set}
    public string b{get;set}
}
是序列化的吗

{..., inst:{a:"value", b:"value"}, ...}
我需要像下面这样序列化类的对象:

{..., inst: x, ...}
其中x是a+b
如何从类中自定义JSON序列化过程?

签出Newton softs JSON序列化程序。它很甜

你有没有试过将a和b设为私有,然后做类似的事情

public string x { get { return a + b; } }
像这样试试

class X{
    public string a{private get;set;}
    public string b{private get;set;}
    public string x {get{ return a + b; }}
}
拥有私有get会将其从序列化中移除,但仍允许对其进行设置。另一个选择是这样做

class X{
    public string a{set;}
    public string b{set;}
    public string x {get{ return a + b; }}
}

关于sum属性的好主意,但我首先从数据库反序列化这个对象,所以我需要这些字段是公共的。因此,我将使用牛顿库,不幸的是,没有从框中的解决方案。考虑为持久模型和VIEW模型使用专用类(或者您正在序列化到JSON中的任何内容)。我发现这是避免类似问题的最简单方法。如果模型之间的映射变得太复杂,请考虑使用AutoPAPER来管理它。大多数发现此Q&A的人将希望自定义NeNethSoopJSON序列化过程,输出不同于所有公共属性的序列化的有效JSON。(OP的输出似乎不是有效的JSON,因为值
x
没有被引用-在这种情况下,不能使用这种技术。)简单的更改,例如隐藏属性,可以使用。更复杂的变化需要时间。