json.net序列化为不同类型



我有2种共享接口的类型...我正在尝试 serialize ,而不是DeSerialize,这是基于JSON的Internallclass实例外部频道的模式

interface iShared {
    public string ID {get; set;}
    public string Name {get; set;}
}
public class InternalClass : iShared {
    [JsonProperty("id")]
    public string ID {get; set;}
    [JsonProperty("name")]
    public string Name {get;set;}
    public int Age {get; set;}
}
public class ExertnalClass : iShared {
    [JsonProperty("externalId")]
    public string ID {get; set;}
    [JsonProperty("name")]
    public string Name {get;set;}
    public string Description {get; set;}
}

例如。对于InternalClass的实例:

new InternalClass {ID = "abc", Name = "myName", Age = 30 }

而不是:

{"id": "abc", "name": "myName", "age": 30}

序列化为

{"externalId": "abc", name: "myName", description: null}

鉴于此对象层次结构,这本身不可能。我看到了两种快速的方法:

a)序列化为界面,应为外部类,作为外部类重新批准:这应该添加具有其默认值的额外属性。

b)如果您可以编辑类别,请使用干净的方式:创建一个(显式)转换操作员或ToExternalClass()方法,并通过手动(或反射)复制其中的值。构造函数ExternalClass(IShared cloneThis)可能会有助于避免额外的工作,如果您将来扩展了这些类别。

相关内容

  • 没有找到相关文章

最新更新