2014-12-06 43 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