2016-02-26 107 views
2

解析JSON在资源我有一个内容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


UPDATE:

去除字符串中的所有空格

var json = Regex.Replace(Encoding.UTF8.GetString(Resources.regionGroups), "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1"); 

后,我有下一个

"{\"EU\":[\"Germany\",\"Ukraine\",\"United Kingdom\",\"Hungary\"]}" 

这也重现了异常。

+0

什么是'无功JSON = Encoding.UTF8.GetString(Resources.regionGroups)的'json'变量的值;'在监视窗口? –

+0

@AdilAnsari,'“{\ r \ n \ t \”EU \“:[\ r \ n \ t \ t \”Germany \“,\ r \ n \ t \ t”Ukraine \“,\ r \ n \ t \ t \“英国\”,\ r \ n \ t \ t \“匈牙利\ \ \ \ \ n”' – demo

+0

**更新:* *'\ r \ n \ t \''会导致问题,请使用'json.Replace(“\ r”,“”)。替换(“\ n”,“”)替换(“\ t”,“ “)。替换(”\“,”“)'删除这些额外的字符串。 –

回答

0

那么@AmitKumarGhosh是正确的编码,我认为。

所以我试图在资源中更改我的json文件的类型。我已经将它从二进制文件改为文本文件,这有所帮助。

所以,现在解析很简单:

JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(Resources.regionGroups);