我对C#相对较新,并试图从JSON反序列化该值的字符串; ["格式"] ["代码"] [" ENCODER"]
// Manually building the string works fine
string test = (dict["format"]["tags"]["ENCODER"]);
string found_value = "";
const char quote = '\u0022';
string encoder = "[" + quote + "format" + quote + "][" + quote + "tags" + quote + "][" + quote + "ENCODER" + quote + "]";
// Just as a test
encoder = encoder.Replace("\u005c\u0022", "\u0022");
// This Fails
found_value = (dict[encoder]);
它会抛出类型' System.Collections.Generic.KeyNotFoundException'发生在mscorlib.dll但未在用户代码中处理 附加信息:字典中没有给定的密钥。
所以我确定它是我传递编码器字符串的方式。可能是一件非常简单的事情,但我花了好几个小时尝试各种事情,现在却对此视而不见。
提前致谢
答案 0 :(得分:0)
基本上,C#不是脚本语言,而是一种编译语言。这意味着没有等效的javascript eval()函数,并且字符串与等效代码字符串的执行效果不同。所以第二次查找,你正试图这样做:
字典[ “[\” 格式\ “] [\” 标签\ “] [\” EVAL \ “]”)
正是抱怨你的第一本字典没有名字的密钥
"[\"format\"][\"tags\"][\"eval\"]"
为什么你试图以第二种方式做到这一点,当第一种方式有效时?