![](/img/trans.png)
[英]C# JSON Deserialize Dictionary<string, Dictionary<string, string>> optional?
[英]Trying to deserialize JSON into Dictionary<string, List<string>> in c#
我正在嘗試將 JSON 反序列化為一個字典,其中字符串作為鍵,字符串列表作為值。 我這樣做的方式是這樣的:
[
{
"key1": [
"value1.1",
"value1.2"
]
},
{
"key2": [
"value2.1",
"value2.2"
]
},
]
並反序列化:
Dictionary<string, List<string>> dictionary;
string text = File.ReadAllText(@"Text.json");
dictionary = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(text);
我收到錯誤:
Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON array (eg [1,2,3]) into type 'System.Collections.Generic.Dictionary
2[System.String,System.Collections.Generic.List
1[System. String]]' 因為該類型需要 JSON object(例如 {"name":"value"})才能正確反序列化。
要修復此錯誤,請將 JSON 更改為 JSON object(例如 {"name":"value"})或將實現的反序列化類型接口更改為數組或數組的 ILists 接口(IColle 之類的類型)從 JSON 陣列反序列化。 JsonArrayAttribute 也可以添加到類型中以強制它從 JSON 數組反序列化。 路徑'',第 1 行,position 1。
有人對我有任何見解嗎?
根據問題的解決方案:
試試這個,希望這會對你有所幫助。 https://dotnetfiddle.net/f3u1TC
string json = @"[{""key1"":[""value1.1"",""value1.2""]},{""key2"":[""value2.1"",""value2.2""]}]";
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, List<string>>[]>(json);
編輯
更新的解決方案:
如果你不需要數組。 然后你必須更新你的 json。 刪除數組大括號[]
並添加這些{}
Json
{
{
"key1": [
"value1.1",
"value1.2"
]
},
{
"key2": [
"value2.1",
"value2.2"
]
},
}
C#
string json = @"{""key1"":[""value1.1"",""value1.2""],""key2"":[""value2.1"",""value2.2""]}";
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(json);
字典的 JSON 語法是{ "key1": "val1", "key2: "val2".....}
因此,如果您的 JSON 的結構如下,您的轉換將按原樣進行。
string json = @"{""key1"":[""value1.1"",""value1.2""],""key2"":[""value2.1"",""value2.2""]}";
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.