问题描述
{
"type": "table","name": "WMIs","database": "someDB","data":
[
{
"WMI": "SG7","Manufacturer": "ABI (GB)"
},{
"WMI": "WAB","Manufacturer": "ABL"
},...
{
"WMI": "Z29","Manufacturer": "SIP (SLO)"
}]}
我想将数据反序列化为字典
{"SG7","ABI (GB)"},{"WAB","ABL"},//...and so on
我的问题:转换 Json 字符串时
string json= @"{""WMI"":""SG7"",""Manufacturer"":""ABI (GB)""},{""WMI"":""WAB"",""Manufacturer"":""ABL""}";
列表工作正常,使用 Newtonsoft 从文件中读取并像这样转换为字典
Dictionary<string,string> dictObj = JsonConvert.DeserializeObject<Dictionary<string,string>>(File.ReadAllText(jsonPath));
产生这个异常:
Newtonsoft.Json.JsonReaderException:“遇到意外字符 解析值时:[.路径 'data',第 6 行,位置 1。"
编辑:好的,我决定将 Json 文件格式化为这个
[
{
"SG7":"ABI (GB)"
},...
{
"Z29":"SIP (SLO)"
}]
并从这里应用 Digvijay 的解决方案:JSON array to C# Dictionary,现在看起来像这样:
string jsonPath = @"C:\filepath\myJson.json";
JArray a = JArray.Parse(File.ReadAllText(jsonPath));
Dictionary<string,string> dictSingleWMI = new Dictionary<string,string>();
foreach (JObject o in a.Children<JObject>())
{
foreach (JProperty p in o.Properties())
{
string manufacturer = (string)p.Value;
string wmi = (string)p.Name;
if (!dictSingleWMI.ContainsKey(wmi))
{
dictSingleWMI.Add(wmi,manufacturer);
}
}
那行得通!不过,如果有人知道如何告诉解析器/转换器如何处理原始格式,我很乐意听取您的意见!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)