【问题标题】:How to display welcome message dynamically in c#?如何在 C# 中动态显示欢迎消息?
【发布时间】:2020-04-11 04:36:30
【问题描述】:

我遇到了一个问题,我从我的休息 api 返回一个完整的 guid,但是我只想让 WelcomeMessage 动态显示而不是硬编码它。谁能帮我解决这个问题。谢谢您的帮助。

我在 guid 之上有一个子名 Tests

json:

      {
    "42f6be79-443b-4845-8549-865af9e74988": {
        "Active": true,
        "CompletedMessage": "Placeholder",
        "CreatedBy": "",
          "Description": "Placeholder",
        "DisplayName": "Placeholder1",
        "ID": "be193200-c277-48bd-90ab-796e869f2e0b",
        "QuestionsIDs": [
            "bd341962-6c7f-459d-88ea-86aa7186840a",
            "bd341962-6c7f-459d-88ea-86aa7186840a"
        ],
         "WelcomeMessage": "Placeholder3"
    }
} 

代码:

        public Text welcomeMessage; 
private async void welcomeMessage()
    {
        Dictionary<string, Questions> questionDictionary = new Dictionary<string, Questions>();

        string json = @"{https://PROJECT_URL.firebaseio.com/Tests/WelcomeMessage.json";

         questionDictionary = JsonConvert.DeserializeObject<Dictionary<string, Questions>>(json);

        foreach (Questions question in questionDictionary.Values)
        {
            Guid[] guids = question.QuestionsIDs; 
            string welcomeMessage = question.WelcomeMessage;

            welcomeMessageShown = GetComponent<Text>();
            welcomeMessageShown.text = welcomeMessage.ToString();

        } 

【问题讨论】:

  • 您希望用哪种编程语言得到答案?最重要的是,到目前为止,您尝试了什么?
  • 请升c。这就是我在上面的代码部分中尝试过的。
  • 您的 json 无效。请发布有效的json
  • 现在检查@HastaTamang
  • 您不能将您的 guid 更改为名为对象的东西吗?说{ "Question" : { ...}}

标签: c# json rest firebase-realtime-database


【解决方案1】:

首先创建一个与您的对象匹配的类。比如说Question

  public partial class Question
  {
        [JsonProperty("Active")]
        public bool Active { get; set; }

        [JsonProperty("CompletedMessage")]
        public string CompletedMessage { get; set; }

        [JsonProperty("CreatedBy")]
        public string CreatedBy { get; set; }

        [JsonProperty("Description")]
        public string Description { get; set; }

        [JsonProperty("DisplayName")]
        public string DisplayName { get; set; }

        [JsonProperty("ID")]
        public Guid Id { get; set; }

        [JsonProperty("QuestionsIDs")]
        public Guid[] QuestionsIDs { get; set; }

        [JsonProperty("WelcomeMessage")]
        public string WelcomeMessage { get; set; }
 }

由于我们的 json 是一个键值对,我们需要将其 deserialize 到一个字典中

我们的字典定义将是

 Dictionary<string, Question> questionDictionary = new Dictionary<string, Question>();

现在使用Newtonsoft.Json,我们可以将其反序列化到我们的字典中。

string json = @"{
                  '42f6be79-443b-4845-8549-865af9e74988': {
                     'Active': true,
                     'CompletedMessage': 'Placeholder',
                     'CreatedBy': '',
                     'Description': 'Placeholder',
                     'DisplayName': 'Placeholder1',
                     'ID': 'be193200-c277-48bd-90ab-796e869f2e0b',
                     'QuestionsIDs': [
                          'bd341962-6c7f-459d-88ea-86aa7186840a',
                          'bd341962-6c7f-459d-88ea-86aa7186840a'
                       ],
                      'WelcomeMessage': 'Placeholder3'
                      }
                    }";

 Dictionary<string, Question> questionDictionary = JsonConvert.DeserializeObject<Dictionary<string, Question>>(json);

 foreach (Question question in questionDictionary.Values)
 {
       Guid[] guids = question.QuestionsIDs; // Do whatever you want with it
       string welcomeMessage = question.WelcomeMessage;
 }

【讨论】:

  • 嘿@HastaTamang 感谢您的回答。但是,json 是硬编码的。请记住,我正在尝试从我的 url 动态检索数据,这是我的 firebase 数据库,我需要获取 WelcomeMessage 以显示值“Placeholder3”。
  • @johnmicheals - 你能看到在 Hasta 的代码中的什么地方,你可以简单地访问不同的属性而不是 QuestionIDs
  • 是的,作为概念证明,它是硬编码的。 string json 将是您从 firebase 端点返回的任何内容。
  • 那么,在string json 内,获取欢迎屏幕值的正确 url 是什么?@"https://PROJECT_URL.firebaseio.com/Tests/WelcomeMessage.json";
  • string welcomeMessage = question.WelcomeMessage;你没看@gravity评论
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 2016-01-26
  • 2020-09-07
  • 2018-04-21
  • 2011-08-09
相关资源
最近更新 更多