我正在努力将 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: 'The best overloaded method match for 'System.Collections.Generic.Dictionary.Add(string, int)' has some invalid arguments'
最佳答案
根本不需要循环或动态
,您可以直接反序列化为字典:
var Zones = JsonConvert.DeserializeObject<Dictionary<string, int>>(json);
PS 每次你使用dynamic
,都会有一只小猫死去......
关于c# - 在 C# 中使用 Newtonsoft.JSON 努力反序列化 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970387/