2016-04-07 57 views
0

所以我有2个字符串类型(名称和值)的属性,并希望puth他们的值到一个字典属性,所以作为一个键值对。我可以在字典属性的getter中做到这一点吗?他们在同一班。用2个字符串属性填充字典属性

public string TagName { get; set; } 

public string TagValue { get; set; } 

public Dictionary<string, string> TagNameAndValue {get; set;} 

JSON输出:

 { 
     "TagName": "processTime", 
     "TagValue": "0" 
     } 

但我想它是这样的:

 { 
     "processTime": "0",    
     } 

我知道这可能是一个不同的主题,因为这很遗憾。

+0

你确定你需要一个'Dictionary'?看起来你需要'KeyValuePair '。 –

+0

我的“老师”说我可以用字典。如果改变了任何东西,整个事情将被转换为Json与JsonSerializer。但是说我使用KeyValuePair,我将如何填写? – tweedledum11

+0

考虑使用'Newtonsoft.Json'? – gldraphael

回答

1

不能使用属性TagNameTagValue在声明处初始化字典。

可以初始化你的字典在构造像这些领域:

YourClassConstructor() 
{ 
    TagNameAndValue = new Dictionary<string, string>() { {TagName, TagValue } }; 
} 

用C#6.0,你可以指定属性的默认值,但你不能在属性初始化使用类字段/属性。

,如果您有一些常量字符串值,然后用C#6.0,你可以这样做:

public Dictionary<string, string> TagNameAndValue { get; set; } = 
        new Dictionary<string, string>() { { "1", "3" } }; 
+0

我明白了,这很有道理。我在构造函数中试过,但得到了一个Exception,因为有时TagValue为null,那里有解决方法吗?使它可以为空或什么? – tweedledum11

+0

好吧,不要说,检查null看起来已经足够了。 json中的输出现在如上所述,所以仍然不是我想要的。 – tweedledum11

0

你可以使用一个名为newtonsoft.json

类型库中的以下后让你在做什么在Package Manager控制台安装NuGet包:

install-package newtonsoft.json 

字典可以使用JsonConvert.SerializeObject()满足静态解析HOD。 JsonConvert驻留在Newtonsoft.Json命名空间中。

Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
dictionary.Add("processTime", "25"); 
Console.WriteLine(JsonConvert.SerializeObject(dictionary)); 

你应该得到类似的输出:

enter image description here