簡體   English   中英

試圖將 JSON 反序列化為字典<string, list<string> &gt; 在 c#</string,>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM