İç içe geçik Json'u C# ile Label'e atamak

MFRKNDGN

Hectopat
Katılım
19 Eylül 2020
Mesajlar
170
Çözümler
2
Yer
NY 10011, USA
Başlığı tam kuramadım ama burada daha detaylı anlatmaya çalışacağım.
Elimde bir json dosyası var içeriği aşağıdaki gibi:

JSON:
{
         "logging_page_id": "profilePage",
         "show_follow_dialog": false,
         "graphql": {
                  "user": {
                           "biography": "Game and Software",
                           "external_url": "https://mfrkndgn.github.io/",
                           "external_url_linkshimmed": "https://mfrkndgn.github.io/feedback"
                  }
         }
}

Bu json da en içeriye geçmiş olan (yani burada: User{...}) yerin içideki "biography" değerine C# ile nasıl ulaşabilirim?
Json iç içe geçik olduğu için erişemedim.
Erişmek için kullandığım C# kodum aşağıdadır:

C#:
 string MyData = File.ReadAllText(@"C:\Users\KULLANICI-ADIM\Desktop\jsonDENEME.Json");
JObject MyParser = JObject.Parse(MyData);
ReURL = (string)MyParser["biography"];
 
Newtonsoft.Json kütüphanesiyle birlikte basitçe yapılabilir.

Burada Json dosyasını okuyabilmek için Deserialize işlemi yapılması gerekmektedir. Alttaki kodları lütfen iyice inceleyin.


C#:
using Newtonsoft.Json;
using System;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string MyData = File.ReadAllText(@"D:\data.json");
            Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(MyData);

            Console.WriteLine(myDeserializedClass.graphql.user.biography);
            Console.ReadLine();
        }


    }

    public class User
    {
        public string biography { get; set; }
        public string external_url { get; set; }
        public string external_url_linkshimmed { get; set; }
    }

    public class Graphql
    {
        public User user { get; set; }
    }

    public class Root
    {
        public string logging_page_id { get; set; }
        public bool show_follow_dialog { get; set; }
        public Graphql graphql { get; set; }
    }

}

1619641740665.png
 
tip sınıflarını ayrı ayrı oluşturmak yerine şu siteye json'u yapıştırıp otomatik de oluşturtabilirsiniz.


C#:
// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
    public class User
    {
        public string biography;
        public string external_url;
        public string external_url_linkshimmed;
    }

    public class Graphql
    {
        public User user;
    }

    public class Root
    {
        public string logging_page_id;
        public bool show_follow_dialog;
        public Graphql graphql;
    }
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı