2014-12-06 39 views
0

我使用c#和Newtonsoft.Json庫進行json的序列化和反序列化。Json序列化變量PropertyName

我有這樣

public class Animal 
{ 
    [JsonProperty(PropertyName = "Dog")] 
    public Key value {get;set;} 
} 

一類,如果我實例作爲

Animal a = new Animal{ Key = "bobby" }; 

和序列化它,我會有像

{ 
    "dog": "bobby" 
} 

我可以改變一個JSON序列化的PropertyName是動態的嗎?例如,如果我想把「鳥」或「貓」而不是「狗」放在什麼位置?

+0

也許寫了定製JsonConverter,但即使是真實的情景?看起來像@ dotnetstep的解決方案會給你你想要的JSON,並且比嘗試將Property用於除了它真正意義表示的東西之外更有意義。 – 2014-12-06 00:51:19

+0

您可能感興趣的[類似問題](http://stackoverflow.com/q/19792274/10263)。 – 2014-12-07 02:01:48

回答

1
public class Animal 
{ 
    public KeyValuePair<string,string> value {get;set;} 
} 

Animal a = new Animal { value = new KeyValuePair("dog","boddy")}; 

如果你想鳥

Animal a = new Animal { value = new KeyValuePair("bird","bird1")}; 
+0

這不會產生OP請求格式的JSON。它生成的JSON看起來像「{」value「:{」Key「:」dog「,」Value「:」boddy「}}'。請參閱https://dotnetfiddle.net/P51YnE。你需要一個字典而不是一個單一的鍵/值對來達到預期的效果。請參閱[序列化字典](http://www.newtonsoft.com/json/help/html/SerializeDictionary.htm)。 – dbc 2015-12-16 22:41:53