我想显示州和城市的列表。
以下是我所做的州和城市列表:
[
{ "State": "California",
"City":
["Los Angeles",
"San Diego",
"San Francisco"
]
},
{ "State": "Texas",
"City":
["Houston",
"San Antonio",
"Dallas"
]
}
]
这是我的代码
List<string> stateCities = new List<string>();
var dictionary = stateCities.Select(x => JsonConvert.DeserializeObject<Dictionary<string, object>>(x))
.ToDictionary(x => x["State"].ToString(), x => ((JArray)x["City"]).ToObject<List<string>>());
lookUpEditState.Properties.DataSource = dictionary;
lookUpEditState.Properties.ValueMember = "State";
lookUpEditCity.Properties.DataSource = dictionary;
lookUpEditCity.Properties.ValueMember = "City";
lookUpEditCity.CascadingOwner = lookUpEditState;
}
我得到了这个错误:
设置失败:无法反序列化当前JSON数组(例如[1,2,3])转换为类型'System.Collections.Generic.Dictionary' 2[System.String,System.Object]',因为该类型需要JSON对象(例如{“name”:“value”})来正确反序列化。要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”})或将反序列化的类型更改为数组或实现集合接口的类型(例如ICollection,IList),比如可以从JSON数组反序列化的List。也可以将JsonArrayAttribute添加到类型中,以强制它从JSON数组反序列化。路径“”,行% 1,位置% 1。
你知道我该怎么解决吗?谢谢你
2条答案
按热度按时间muk1a3rh1#
您需要使用与JSON表示相匹配的类来反序列化JSON。在本例中,您有一个对象数组,这些对象具有State和City属性,因此您可以使用以下内容:
如果你真的需要,你可以把它转换成字典:
...这将给予你一个
Dictionary<string,string[]>
。0qx6xfy62#
这对我很有效