0

我正在构建一个 JSON 文件解析器。我目前使用 JavaScriptSerializer 类将 JSON 文件读入 DynamicJsonObject 看起来像

dynamic glossaryEntry

然后我可以通过以下方式检索顶级 json 节点。用于检索这个名为 Scoring 的 JSON 组,看起来像

{
    "Scoring":
    [
        {
            "blah": "blah",
            "blah": "blah"      
        },
        {
            "blah": "blah",
            "blah": "blah"      
        }   
    ]
}

我使用动态表达式:

return glossaryEntry.Scoring;

或者例如我会使用

return glossaryEntry.quests;

对于看起来像这样的 JSON:

{
    "quests":
    [
        ... 
    ]
}

这是非常硬编码的,需要我提前知道可以解析的所有可能的标识符。我在想必须有一种方法可以让动态表达式评估为某些东西,以便可以在运行时确定词汇表条目。“this”部分?

感谢您提供的任何帮助。

4

1 回答 1

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]];
于 2012-08-01T11:34:53.567 回答