2016-02-26 72 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);