我一生无法引用另一个类的列表内的变量

问题描述

我正在尝试设置变量def,以将DeFinition的值包含在DeFinition Class中 这是我要参考的课程。

public class DeFinition
{
   public string type { get; set; }
   //need to get this to def in PlayButton event
   public string deFinition { get; set; }
   public string example { get; set; }
   public string image_url { get; set; }
   public object emoji { get; set; }

}

public class Root
{
   public List<DeFinition> deFinitions { get; set; }
   public string word { get; set; }
   public string pronunciation { get; set; }
}

我需要在事件中包含def变量,但我不知道如何做,为此,我必须引用DeserializedJSON变量,因为它是从那里将JSON解析到该类中的,但是我找不到一个DeserializedJSONdefs的方式:

//Click PlayButton event
public async void PlayButton_Click(object sender,MouseButtonEventArgs e)
{
   //Changing From Start Screen Grid To Quiz Screen Grid
   QuizScreen.Visibility = Visibility.Visible;
   StartScreen.Visibility = Visibility.Collapsed;
   //Running game logic once to start game up
   string word = RandomWord();
   deFinitionUnformatted = await Define(word);
   //Deserialising JSON
   Root DeserializedJSON = JsonConvert.DeserializeObject<Root>(deFinitionUnformatted);

   string def = //help here pls

      DeFinitionBox.Text = def;
}

非常感谢您的帮助,我只是希望这是我正在学习的一个简单的疏忽。

编辑:@crowcoder请求提供JSON示例

{
    "deFinitions": [
        {
            "type": "noun","deFinition": "something shaped like a platter,in particular:","example": "dig out some old platters","image_url": null,"emoji": null
        },{
            "type": "noun","deFinition": "a large flat dish or plate for serving food.","example": "arrange the fruit on a serving platter","image_url": "https://media.owlbot.info/dictionary/images/kkkki.jpg.400x400_q85_Box-0,360,360_crop_detail.jpg","emoji": null
        }
    ],"word": "platter","pronunciation": "ˈpladər"
}

解决方法

据我了解,您正在构建猜词游戏。您可以从外部API获取单词的定义,并希望获取需要分配给def的第一个定义。

由于definitionsList<Definition>,请使用索引器获取第一项。

string def = DeserializedJSON.definitions[0].definition;

或者,使用Linq的First方法。

string def = DeserializedJSON.definitions.First().definition;

请注意,您的Root类包含类型为definitions的属性List<Definition>,这意味着您也可以有多个定义或根本没有定义。如果有多个定义,则需要决定选择哪个。

下面的代码会预先检查列表是否不是null以及列表中是否有定义。否则,如果列表为null或访问第一个项目(如果没有没有定义的情况下),则会出现异常。

if (DeserializedJSON.definitions != null && DeserializedJSON.definitions.Count > 0)
   def = DeserializedJSON.definitions[0].definition;
else
   def = "No definition found";