我正在构建一个JSON文件解析器。我目前使用JavaScriptSerializer类将JSON文件读入一个看起来像
的DynamicJsonObjectdynamic glossaryEntry
然后我可以用以下方式检索顶级json节点。用于检索名为Scoring的名为
的JSON组{
"Scoring":
[
{
"blah": "blah",
"blah": "blah"
},
{
"blah": "blah",
"blah": "blah"
}
]
}
我使用动态表达式:
return glossaryEntry.Scoring;
或者例如我使用
return glossaryEntry.quests;
对于看起来像这样的JSON:
{
"quests":
[
...
]
}
这是非常硬编码的,并且要求我事先知道可以解析的所有可能的标识符。我认为必须有一种方法让动态表达式评估为某种东西,以便glossaryEntry。“this”部分可以在运行时确定吗?
感谢您提供的任何帮助。
答案 0 :(得分:1)
您可以将json字符串反序列化为Dictionary<string,object>
var glossaryEntry = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(json);
var keys = glossaryEntry.Keys.ToList();
var scoring1 = glossaryEntry["Scoring"];
//OR
var scoring2 = glossaryEntry[keys[0]];