繁体   English   中英

json_serializer.DeserializeObject,立即窗口,VS2017

[英]json_serializer.DeserializeObject, immediate window, VS2017

我是 ac# 初学者(但对 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_list的类型为IDictionary<string, object> 因此, value_list["settings"]object类型。

要查看立即窗口中的值,请将中间结果(类型为object )转换为适当的类型。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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