[英]Struggling to deserialize a JSON string using Newtonsoft.JSON in C#
我正在努力将JSON字符串反序列化为C#中的对象。
有问题的字符串是
{"Hallway":2,"Hot Water":7,"Kitchen":4,"Landing":6,"Living Room":3,"Office":1,"Utility":5}
我当前的代码是:
dynamic response = JsonConvert.DeserializeObject<dynamic>(outputData);
Dictionary<string,int> Zones = new Dictionary<string, int>();
foreach (dynamic Temp in response)
{
Zones.Add(Temp.Name, 1);
}
outputData
是上面的原始JSON字符串,来自IoT设备。
上面的代码可以将名称输入到字典对象中,但是我也想捕获该数字,即用正确的数字替换1。
我已经尝试过Temp.Value
和Temp.First.Value
,但出现以下错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'与'System.Collections.Generic.Dictionary.Add(string,int)'最佳的重载方法匹配有一些无效的参数'
完全不需要循环或dynamic
,您可以直接反序列化为字典:
var Zones = JsonConvert.DeserializeObject<Dictionary<string, int>>(json);
附注:每次使用dynamic
,小猫都会死亡...
您可以直接反序列化为Dictionary<string,int>
:
var dict=JsonConvert.DeserializeObject<Dictionary<string,int>>(json);
代替
Zones.Add(Temp.Name, 1);
你需要
Zones.Add(Temp.Name, (int) Temp.Value);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.