json_serializer.DeserializeObject,即时窗口,VS2017



我是C#初学者(但对JavaScript非常熟悉),并且我正在通过调试示例代码来学习。我现在对"立即窗口"有一个问题。

我在

上设置了一个断点
  (... nested object sent via JSON from some external javascript code ...)
var json_serializer = new JavaScriptSerializer();
var value_list = (IDictionary<string, object>)json_serializer.DeserializeObject(value);

然后在即时窗口中评估了以下内容

value_list
Count = 4
    [0]: {[type, msg]}
    [1]: {[settings, System.Collections.Generic.Dictionary`2[System.String,System.Object]]}
    [2]: {[hello, edge]}
    [3]: {[txt, notepad.exe]}
value_list["txt"]
"notepad.exe"

value_list["settings"]
Count = 2
    [0]: {[host, test.com]}
    [1]: {[port, 80]}

到目前为止很好。

然后我尝试了

value_list["settings"]["host"]

,但只有"错误cs0021:无法将索引[]应用于类型'对象'的表达

如何在即时窗口中打印主机的值?

c#是一种强烈打字的语言。

你有

var value_list = (IDictionary<string, object>)json_serializer.DeserializeObject(value);

var表示该变量的类型已在编译过程中由编译器确定。由于右侧的铸件,编译器确定了这一点:

IDictionary<string, object> value_list = (IDictionary<string, object>)json_serializer.DeserializeObject(value);

因此,value_listIDictionary<string, object>类型。因此,value_list["settings"]object类型。

要查看即时窗口中的值,将中间结果(即object类型)铸成适当的类型。

((IDictionary<string, object>)value_list["settings"])["host"]

相关内容

  • 没有找到相关文章

最新更新