繁体   English   中英

在C#中使用Newtonsoft.JSON努力反序列化JSON字符串

[英]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.ValueTemp.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM