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

问题描述

我正在尝试设置变量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";

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...