[英]How do i deserialize this dictionary<string,string[]>
我有以下json:
[
{
"Key": "tradepack",
"Value": [
"Select Tradepack"
]
},
{
"Key": "route",
"Value": [
"Select Route"
]
},
{
"Key": "recall",
"Value": [
"Select Recall Location"
]
},
{
"Key": "stones",
"Value": [
"True"
]
},
{
"Key": "quickstep",
"Value": [
"True"
]
},
{
"Key": "dreamingdonkey",
"Value": [
"True"
]
},
{
"Key": "meleeskills",
"Value": []
},
{
"Key": "rangedskills",
"Value": []
},
{
"Key": "buffedskills",
"Value": []
}
]
我目前正在使用這個
String data = System.IO.File.ReadAllText(Application.StartupPath + "\\folder\\Data\\Config\\config.txt");
return JsonConvert.DeserializeObject<Dictionary<string, object[]>>(data);
但我得到以下錯誤
無法將當前JSON數組(例如[1,2,3])反序列化為類型'System.Collections.Generic.Dictionary`2 [System.String,System.Object []]',因為該類型需要JSON對象(例如{ “ name”:“ value”})正確反序列化。 要解決此錯誤,可以將JSON更改為JSON對象(例如{“ name”:“ value”}),也可以將反序列化類型更改為數組,或者將實現集合接口的類型(例如ICollection,IList)更改為List,例如List從JSON數組反序列化。 還可以將JsonArrayAttribute添加到類型中,以強制其從JSON數組反序列化。 路徑'',第1行,位置1。
任何人都想解釋一下,因為我將如何解決這個問題,特別是在序列化中,C#
您的json是一個數組/列表。 所以您需要反序列化為類似List<Dictionary<string, object>>
var data = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(json);
要么
var dict = JArray.Parse(json)
.Select(x => x.ToObject<KeyValuePair<string, string[]>>())
.ToDictionary(x => x.Key, x => x.Value);
您的數據看起來更像KeyValuePair<string, string[]>[]
。 您可以嘗試將其反序列化,然后根據結果創建字典。
var kvps = JsonConvert.DeserializeObject<KeyValuePair<String, String[]>[]>(data);
return kvps.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.