从给定键的字符串中提取属性

时间:2018-06-26 20:27:15

标签: c# string dictionary json.net mapping

我的字符串有一个小问题

da:,de:,en:Henkell Brut Vintage,fr:,nl:,sv:

我需要将此字符串映射到字典,以便键是:之前的键 并且值在:之后。

我试图将其解析为Jtoken,所以请查看它是否可以正确序列化,但事实并非如此。

var name = Newtonsoft.Json.Linq.JToken.Parse(da:,de:,en:Henkell Brut Vintage,fr:,nl:,sv:);

然后使用

提取所需的属性
name.Value<String>("en").ToString());

但是我似乎无法将字符串解析为Json.Linq.JToken

我的另一个想法是将其映射到字典,但是对于这个很小的字符串似乎有点过高。

有什么简单的解决方案,例如我可以提取指定键的值?

2 个答案:

答案 0 :(得分:3)

怎么样

var dict = input.Split(',').Select(s => s.Split(':')).ToDictionary(a => a[0], a => a[1]);

当前不是有效的JSON。如果您可以将其存储为有效的JSON,则可以让JSON解析器为您解析它,这样可以更好地处理值中的逗号和冒号(冒号后面的部分)。

如果您只想存储本地化的文本形式,建议使用.resx资源文件。

答案 1 :(得分:0)

与不使用Linq的乔治相同

        string initial = "da:,de:,en: Henkell Brut Vintage,fr:,nl:,sv:";
        string[] comaSplit = initial.Split(',');
        Dictionary<string, string> dictionary = new Dictionary<string, string>();
        foreach (string split in comaSplit) {
            string[] colonSplit = split.Split(':');
            dictionary.Add(colonSplit[0], colonSplit[1]);
        }