gpt4 book ai didi

c# - 使用 Json.net 仅将接口(interface)属性序列化为 JSON

转载 作者:IT王子 更新时间:2023-10-29 04:10:18 26 4
gpt4 key购买 nike

像这样一个简单的类/接口(interface)

public interface IThing
{
string Name { get; set; }
}

public class Thing : IThing
{
public int Id { get; set; }
public string Name { get; set; }
}

如何获取只有“Name”属性(只有底层接口(interface)的属性)的JSON字符串?

实际上,当我这样做的时候:

var serialized = JsonConvert.SerializeObject((IThing)theObjToSerialize, Formatting.Indented);
Console.WriteLine(serialized);

我得到完整的对象作为 JSON(Id + 名称);

最佳答案

我用的方法,

public class InterfaceContractResolver : DefaultContractResolver
{
private readonly Type _InterfaceType;
public InterfaceContractResolver (Type InterfaceType)
{
_InterfaceType = InterfaceType;
}

protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
//IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
IList<JsonProperty> properties = base.CreateProperties(_InterfaceType, memberSerialization);
return properties;
}
}

// To serialize do this:
var settings = new JsonSerializerSettings() {
ContractResolver = new InterfaceContractResolver (typeof(IThing))
};
string json = JsonConvert.SerializeObject(theObjToSerialize, settings);


关于c# - 使用 Json.net 仅将接口(interface)属性序列化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com