gpt4 book ai didi

c# - 使用 json.net 中的属性的两个可能的属性名称反序列化?

转载 作者:行者123 更新时间:2023-11-30 14:50:30 24 4
gpt4 key购买 nike

我为每个 json 属性设置了两个“键”。我总是使用短属性名称进行序列化,但对于反序列化,我需要同时支持短属性名称和长属性名称。
因此,在下面的示例中,反序列化为 SimpleClass 时我需要支持“cid”和“customIdentifier”。没有冲突的风险,只需要支持处理两个属性名称。

public class SimpleClass
{
[JsonProperty("cid")]
public int Id { get; set; }
}

[TestFixture]
public class DeserializationDemo
{
[TestCase("{\"cid\": 1}")]
[TestCase("{\"customIdentifier\": 1}")]
public void JsonConvert_Can_Deserialize(string json)
{
var expected = new SimpleClass() { Id = 1 };
var result = JsonConvert.DeserializeObject<SimpleClass>(json);
Assert.AreEqual(expected.Id, result.Id);
}

[TestCase("{\"cid\":1}")]
public void JsonConvert_Can_Serialize(string expected)
{
var test = new SimpleClass() { Id = 1 };
var result = JsonConvert.SerializeObject(test);
Assert.AreEqual(expected, result);
}
}

最佳答案

当标记为 [JsonProperty] 时,Json.NET 将反序列化私有(private)和/或仅设置的属性.因此你可以这样做:

public class SimpleClass
{
[JsonProperty("cid")]
public int Id { get; set; }

[JsonProperty("customIdentifier")]
int CustomIdentifier
{
set
{
Id = value;
}
}
}

关于c# - 使用 json.net 中的属性的两个可能的属性名称反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36503806/

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