2016-04-08 21 views
3

Her json özelliği için iki "anahtarım" var. Ben her zaman kısa mülkiyet ismiyle serileştiririm, ancak serileştirme için hem kısa hem de uzun mülk ismini desteklemem gerekir.
Dolayısıyla, aşağıdaki örnekte SimpleClass'a seri hale getirirken "cid" ve "customIdentifier" desteğine ihtiyacım var. Çakışma riski yok, sadece iki özellik ismiyle başa çıkmak için desteğe ihtiyacınız var. [JsonProperty] ile işaretlenmiş zamanjson.net bir özellik için iki olası özellik isimleri ile Deserialisation?

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); 
    } 
} 
+0

Kudos TestFixture için - daha fazla soru çalışır bu –

cevap

5

Json.NET özel ve/veya set okunur özellik serisini olacaktır. Böylece yapabilirsiniz:

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

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

Basit bir çözüm gibi sunuldu diliyoruz! – DNPE

İlgili konular