• 22-04-2022, 00:08:15
    #1
    Merhaba.

    {"1":"299","2":[{"1":"a"},{"1":"b"},{"1":"c"},{"1":"d"}],"3":"0","4":"9223372036854775807","7":{"1":1,"4":false}}
    şeklinde bir JSON'um var diyelim.

        public class _2
        {
            public string _1 { get; set; }
        }
    
        public class _7
        {
            public int _1 { get; set; }
            public bool _4 { get; set; }
        }
    
        public class GRoot
        {
            public string _1 { get; set; }
            public List<_2> _2 { get; set; }
            public string _3 { get; set; }
            public string _4 { get; set; }
            public _7 _7 { get; set; }
        }
    modeller bu şekilde.

                    byte[] responseArray = wc.UploadValues(url, "POST", myNameValueCollection);
    
                    wc.Encoding = System.Text.Encoding.UTF8;
                    var json = Encoding.UTF8.GetString(responseArray);
                    txtJsonResponse.Text = json; // BURASI JSON'u TEXTBOX'a alıyor.
    
                    // SORUN BURADA. Bir türlü elementi getiremiyorum. 
                    var sonuc = JsonConvert.DeserializeObject<GRoot>(json);
                    foreach (var kelime in sonuc._2)
                    {
                        lstJsonObjects.Items.Add(kelime._1[0]);
                    }
    Acaba nerede hata yapıyorum? Bilen birisi yardımcı olabilir mi?
  • 22-04-2022, 00:09:55
    #2
    https://app.quicktype.io/

    Buraya gir sola yapıştır sağdan C# seç sonra al sana kod
    • mkozdogan
    mkozdogan bunu beğendi.
    1 kişi bunu beğendi.
  • 22-04-2022, 00:12:53
    #3
    Misafir adlı üyeden alıntı: mesajı görüntüle
    https://app.quicktype.io/

    Buraya gir sola yapıştır sağdan C# seç sonra al sana kod
    Hocam, teşekkürler. Belirttiğiniz siteyi kullandım. Hatta farklı olarak burayı da kullandım. Modeller de orada üretildi.

    Yalnız, ben nerede hata yapıyorum onu anlamaya çalışıyorum. Amacım, kodun çalışması değil, hatamı bulmak. Tekrar teşekkür ediyorum.
  • 22-04-2022, 00:49:46
    #4
    JsonProperty işine yarar.
    Aşağıdaki linkte görebilirsin.
    https://dotnetfiddle.net/aMXTCh
  • 22-04-2022, 00:58:45
    #5
    emrahe adlı üyeden alıntı: mesajı görüntüle
    JsonProperty işine yarar.
    Aşağıdaki linkte görebilirsin.
    https://dotnetfiddle.net/aMXTCh
    Teşekkürler.

    Bu şekilde yazdığım kod işe yaradı.
    JsonConverter ile JsonProperty konusuna tekrar çalışmam gerek aradaki farkı anlamak için.
  • 22-04-2022, 01:08:18
    #6
    Rica ederim. JsonProperty ile JsonConverter aynı kütüphane içinde çalışan ayrı işe yarayan yapılar.
    String'i object'e, Object'i de String'e JsonConverter altındaki Serialize ve Deserialize ile çevirebiliriz.Ancak; Sizin json değerindeki "1", "2"... gibi isimlendirmeler c# property isimlendirme kuralına uymadığı için JsonProperty ile sınıftaki property'lere geçici isim veriliyor. JsonConvert ile serialize veya deserialize ederken direkt olarak JsonProperty'de tanımlanan isimi kullanıyor.
    Diğer bir örnek vermek gerekirse;
    Diyelim ki halka açık bir json stringin var. Ama bu string içerisindeki property isimlerini herkesin bilmesini istemiyorsun. Çünkü json değerindeki isimlendirmeler binevi senin arkaplandaki sınıflarının property isimlerine denk geliyor.
    Bu durumda isimleri JsonProperty kullanarak geçici isim verebilirsin.
    Json: "{'HerkeseAcikAd':1}"
    c#:
    sınıf{
    [JsonProperty("HerkeseAcikAd")]
    public int GizliAd;
    }

    Umarım kısa ve öz açıklayıcı olmuştur.
    mkozdogan adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler.

    Bu şekilde yazdığım kod işe yaradı.
    JsonConverter ile JsonProperty konusuna tekrar çalışmam gerek aradaki farkı anlamak için.