首页 > 解决方案 > 在统一 3d 中使用键读取 json

问题描述

我正在统一 3d 中制作字典游戏。我有一个关于所有词汇的所有定义和示例的 json 文件。每个单词都有键是它自己的单词(我突出显示)。我怎样才能得到每个单词(键)的值。我为 json 创建了一个对象。

例如:我有一个单词“a cappella”,它给了我回复:

清唱

1:副词

定义:无伴奏

例子:他们演奏了无伴奏合唱

2:形容词

定义:没有乐器伴奏的歌曲

示例:他们演唱了无伴奏合唱弥撒。

非常感谢

这是我用于 JSON 的模型

public class VocabularyModel : MonoBehavior
{
    public string Word { get; set; }

    public string WordId {get; set; }

    public Meaning[] Meanings { get; set; }

    public Label[] Labels { get; set; }
}

json字符串

{“无伴奏合唱”:{“单词”:“无伴奏合唱”,“wordset_id”:“5feb6f679a”,“含义”:[{“id”:“492099d426”,“def”:“没有音乐伴奏”,“示例": "他们进行了无伴奏合唱", "speech_part": "adverb" }, { "id": "0bf8d49e2e", "def": "无伴奏演唱", "example": "他们演唱了无伴奏合唱弥撒" , "speech_part": "形容词" } ] }, "AD": { "word": "AD",“wordset_id”:“76c6ebfae9”,“含义”:[ {“id”:“4c21c72afa”,“def”:“在基督教时代”,“speech_part”:“副词”,“同义词”:[“AD”, “anno Domini”] } ] },“AD”:{“word”:“AD”,“wordset_id”:“b7e9d406a0”,“含义”:[{“id”:“a7482f3e30”,“def”:“in基督教时代”,“speech_part”:“副词”,“同义词”:[ “广告” ] } ] }

}

标签: c#unity3d

解决方案


您是在使用库还是自己编写代码?
在第二种情况下,我建议使用 Newtonsoft 的 Json.NET。

您可以将 JSON 反序列化为 JObject,然后将其视为字典。

为此,您可以按以下方式构建 JSON:

{
    "a_cappella" : {
        "word" : "a cappella",    
        "wordId" : "123",
        "meanings" : {...},
        "labels" : {...}
    }
    "building" : {
        "word" : "building",    
        "wordId" : "124",
        "meanings" : {...},
        "labels" : {...}
    }
}

然后你反序列化成一个 JObject 并搜索你需要的东西:


var json = // here is your json string
var dictionary = JsonConvert.DeserializeObject(json); 

if (dictionary.ContainsKey("a_cappella")){
    return dictionary["a_cappella"].ToObject<VocabularyModel>();
}




推荐阅读