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

标签 c# json json.net

我正在努力将 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: '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/

相关文章:

c# - 在现有 Web API 中支持 ODataQueryOptions

c# - 使用 ObjectAnimationUsingKeyFrames 切换可见性

c# - 如何将一个类的 JSON 序列化重定向到另一个类?

c# - 具有geo_shape字段的文档不能反序列化?

c# - 将数据从 ModelBinder 传递到自定义 InputFormatter

c# - 在 Adob​​e AxAcroPDFLib 中启用注释

json - 使用jq将JSON {"k1":"v1","k2":"v2"}转换为CSV : v1, v2

php - 将 PHP json_encode 数组发送到 jQuery

javascript - 如何使用nodejs/js通过id找到json对象

c# - DateTimeZoneHandling.RoundtripKind 未保留日期时间时区