在资源中,我有包含下一个内容的json文件:
{
"EU": [
"Germany",
"Ukraine",
"United Kingdom",
"Hungary"
]
}
我想将其反序列化为Dictionary<string,List<string>>
我试过接下来:
var json = Encoding.UTF8.GetString(Resources.regionGroups);//Resources.regionGroups return byte[]
return JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(json);
但是每次我收到异常时,因为变量json
都是不连贯的 json 格式。
什么会导致这种情况?我已经尝试了相同的反序列化,但使用 jsonString 作为硬编码并且可以工作。
详细的异常消息:
解析值时遇到意外字符:。路径 '',行 0,位置 0。
更新:
删除所有空格后
var json = Regex.Replace(Encoding.UTF8.GetString(Resources.regionGroups), "("(?:[^"\\]|\\.)*")|\s+", "$1");
从字符串我有下一个
"{"EU":["Germany","Ukraine","United Kingdom","Hungary"]}"
这也重现了异常。
嗯,@AmitKumarGhosh编码是对的,正如我认为的那样。
所以我尝试在资源中更改我的 json 文件类型。我已将其从二进制文件更改为文本文件,这很有帮助。
所以现在解析非常简单:
JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(Resources.regionGroups);