Как я могу зациклить и получить значения из моей базы Json? - PullRequest
1 голос
/ 19 мая 2019

Я хочу получить значения из моего json-файла Firebase. В настоящее время я могу добавить значения без проблем, но не могу их прочитать

Я уже пробовал несколько способов зациклить его, но получаю всегдазастрял

это мой json

{  
   "23ds1f5":{  
      "email":"email@example.com",
      "name":"my name",
      "points":0
   },
   "dsfv57s":{  
      "email":"email2@example.com",
      "name":"this name",
      "points":0
   },
   "r6s7gv98268":{  
      "email":"lol@example2.com",
      "name":"nameHere",
      "points":0
   }
}

поля "23ds1f5" "dsfv57s" "r6s7gv98268" генерируются автоматически, и я хочу получить имя электронной почты и баллы, это возможно?

это мой код на данный момент

FirebaseResponse response = await client.GetAsync("testing");
Data data = response.ResultAs<Data>();

            var json = response.Body;
            var firebaseLookup = JsonConvert.DeserializeObject<Data>(json);

            Console.WriteLine(json.ToString());


            var jsonObject = JObject.Parse(json);
            foreach (var tmp in jsonObject) {
                Console.WriteLine(tmp.Key);
            }

я не знаю, как получить значение, я пробовал такие вещи:

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
            foreach (var kv in dict) {
                Console.WriteLine(kv.Key + ":" + kv.Value);
            }

но безуспешно

Я хотел бы получить email от каждого

Обновление: с этим кодом теперь я могу взять свой 1-й элемент, но я не могу получить значение

var jsonObject = JObject.Parse(json);
            foreach (var tmp in jsonObject) {
                Console.WriteLine(tmp);

            }

консоль:

[23ds1f5, {
  "email": "email@example.com",
  "name": "my name",
  "points": 0
}]

Проблема решена !!

            Dictionary<string, Data> elist = JsonConvert.DeserializeObject<Dictionary<string, Data>>(json);

            foreach (KeyValuePair<string, Data> entry in elist) {
                // do something with entry.Value or entry.Key
                //Console.WriteLine(entry.Key);
                Console.WriteLine(entry.Value.name);
                Console.WriteLine(entry.Value.email);
                Console.WriteLine(entry.Value.points);
            }
...