此问题在此处已有答案:
Converting a string to a Dictionary of Dictionary<string, List> in C#(1个答案)
16小时前关门了。
我有一个字符串"{yhxj7027DO=[3], lzpd7453EH=[2, 3]}"
。我想将其转换为new Dictionary<string, List<string>>()
类型的字典。我尝试了以下方法
string = "{yhxj7027DO=[value1], lzpd7453EH=[value2, value3]}"
var strArr = input.Replace("{", "").Replace("}", "").Split("],", StringSplitOptions.TrimEntries);
for (int i = 0; i < strArr.Length - 1; i++) strArr[i] += "]";
StringBuilder sb = new StringBuilder("{");
foreach (var item in strArr)
{
var arr = item.Split("=");
sb.Append("\"" + arr[0] + "\"" + ":" + arr[1] + ",");
}
sb.Append("}");
var json = sb.ToString().Replace(",}", "}");
Dictionary<string, string[]> result = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(json);
我有以下错误:Unexpected character encountered while parsing number: :. Path 'lzpd7453EH[0]', line 1, position 36.
可能是什么问题?
4条答案
按热度按时间khbbv19g1#
你的问题是如何定义输入字符串的语法。首先,你没有命名变量
input
,这似乎是你的代码的其余部分所期望的。其次,你的value1
,value2
和value3
不是变量。(编辑:您对问题的编辑删除了value1
等应该插值的提示,但我留下了以下信息,以防您确实想要插值这些值。可以使用字符串插值:
但是请注意,你必须通过加倍来转义
{
和}
字符。你也可以使用串联:如果你需要在字符串中包含双引号,你可以使用“raw string literal”或者用
\
字符转义引号。pbwdgjma2#
希望你不介意我稍微修改一下。我相信这可以达到你想要的效果。我内置了一些安全措施以防字符串不包含你所期望的内容。
a2mppw5e3#
你可以使用正则表达式来实现。下面的例子可以用于你的输入,但需要改进。
j8yoct9x4#
您可以使用
RegEx
进行拆分,然后构建IDictionary<string, List<string>>
。下面是dotnet fiddle中的工作示例