Kütüphaneler: JSON

 

JSON:

JSON formatının serileştirilmesi ve serileştirmenin kaldırılması

Author: Kuzma Shevelev

 
Automated-Trading:

JSON:

Yazar: Kuzma Shevelev

Kütüphanenin neden sadece Ruslar arasında gösterildiğini söyleyebilir misiniz?
. Bu yüzden fark edilme olasılığının düşük olduğunu ve kullanılabileceğini düşünüyorum, ancak ağ sorguları için veri üretmek için çok uygun olacağını düşünüyorum.

 
Ben jAson kullandığım için sizin uygulamanıza bakmadım. Sizin uygulamanızın herhangi bir avantajı var mı? Bir karşılaştırma yapabilir misiniz?
JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • www.mql5.com
Сериализация и десериализация JSON протокола. Портированный код со скоростной библиотеки С++.
 
Edgar Akhmadeev #:
Ben jAson kullandığım için sizin uygulamanıza bakmadım. Sizin uygulamanızın herhangi bir avantajı var mı? Bir karşılaştırma yapabilir misiniz?

1. Boyut, 20kb vs 30kb

2. Herhangi bir JSON yapısıyla esnek bir şekilde çalışmaya izin verir
- Değerin farklı türlerde olabileceği durumları ele almayı sağlayan değer türlerini tanımlamak için yöntemler vardır
- Anahtarların önceden bilinmediği durumları ele almayı sağlayan nesne anahtarlarını almak için yöntemler vardır
- Kullanıcı dostu kütüphane arayüzü, JSON yapısını doldurmayı kolay ve anlaşılır hale getirir.

3. Açık ve insan tarafından okunabilir kaynak kodu
- Kütüphanenin çalışmasını kolayca anlamanızı sağlar, çalışma prensibini şeffaf hale getirir
- Kütüphanenin açık yapısı, ağ isteklerini ve yanıtlarını rahatça hata ayıklamanıza olanak tanır
- Operatör aşırı yüklemesini kullanmaz, net adlara sahip yöntemler sağlar, kodu herhangi bir geliştirici için anlaşılır hale getirir.

 
Kuzma Shevelev #:

Kütüphanenin neden sadece Ruslar arasında gösterildiğini söyleyebilir misiniz?
Ağ sorguları için veri üretmek için çok uygun olacağını düşünmeme rağmen, kimsenin bunu fark edip kullanmasının pek olası olmadığını düşünüyorum.

Kod tabanı bu şekilde yapıldığından (en azından şimdilik) - varsayılan olarak kodun yalnızca bir dil sürümünde kayıtlı olması garanti edilir (bunu İngilizce dalında da yapabilirsiniz) ve diğer dillere aktarım - yalnızca bazı koşullar altında (belirtilmelidir - popülerliğe göre otomatik olarak, moderatörlerin komutuyla veya başka bir şekilde).

Json temasının kendisine gelince, örneğin algobook'tan toyjson.mqh'nin minimalist bir uygulaması da var.

Учебник по MQL5: Расширенные средства языка / Проекты / Клиентская программа сигнального сервиса на MQL5
Учебник по MQL5: Расширенные средства языка / Проекты / Клиентская программа сигнального сервиса на MQL5
  • www.mql5.com
Итак, мы решили, что текст в сообщениях сервиса будет в формате JSON. В наиболее распространенном варианте, JSON представляет собой текстовое...
 
Kuzma Shevelev #:

1. Boyut, 20kb vs. 30kb

2. Herhangi bir JSON yapısıyla esnek bir şekilde çalışmaya izin verir
- Değerin farklı türlerde olabileceği durumları ele almayı sağlayan değer türlerini tanımlamak için yöntemler vardır
- Anahtarların önceden bilinmediği durumları ele almayı sağlayan nesne anahtarlarını almak için yöntemler vardır
- Kullanışlı kütüphane arayüzü, JSON yapısını doldurmayı kolay ve anlaşılır hale getirir.

3. Açık ve insan tarafından okunabilir kaynak kodu
- Kütüphanenin çalışmasını kolayca anlamanızı sağlar, çalışma prensibini şeffaf hale getirir
- Kütüphanenin açık yapısı, ağ isteklerini ve yanıtlarını rahatça hata ayıklamanıza olanak tanır
- Operatör aşırı yüklemesini kullanmaz, net adlara sahip yöntemler sağlar, kodu herhangi bir geliştirici için anlaşılır hale getirir.

burada "Anlaşılabilir ve insan tarafından okunabilir kaynak kodu"nun ne olduğunu görmeye bile karar verdim :-)

3. noktanın üstünü çizin - jAson'un yazarı gibi siz de yorum ve dokümantasyon yazma zahmetine bile girmemişsiniz. Ve operatörler ile kullanıcı için daha uygun ve açıktır, bu yüzden onlardan kaçınmak bir avantajdan çok bir dezavantajdır.

 
Stanislav Korotky #:

Kod tabanı bu şekilde yapıldığından (en azından şimdilik) - varsayılan olarak kodun yalnızca bir dil sürümünde kaydedilmesi garanti edilir (bunu İngilizce dalında da yapabilirsiniz) ve diğer dillere taşıma - yalnızca bazı koşullar altında (belirtilmelidir - popülerlik tarafından otomatik olarak, moderatörlerin komutuyla veya başka bir şekilde).

Json temasının kendisine gelince, örneğin algobook'tan toyjson.mqh'nin minimalist bir uygulaması da vardır.

Baktım, gerçekten var, hatta bence çok iyi bir versiyonu bile var

Ama her durumda, bu kütüphanenin, onu kullanmak için uyguladığım arayüzü beğenecek bir kitle bulacağını düşünüyorum.

 
Kuzma Shevelev #:

Kütüphanenin neden sadece Ruslar arasında gösterildiğini söyleyebilir misiniz?
Ağ sorguları için veri üretmek için çok uygun olacağını düşünmeme rağmen, kimsenin bunu fark edip kullanmasının pek olası olmadığını düşünüyorum.

Kodunuzu İngilizce konuşan kitleye görünür kılmak için İngilizce bir forumda yayınlamalısınız.

İngilizce foruma gidin.


Onların kod tabanına gidin.



Kodu ekleyin.


Şimdi, bir forum segmentindeki kod otomatik olarak başka bir segmente kopyalanmaz, bunu kendiniz yapmanız gerekir.

 

Uzun zamandır JAson kullanıyorum. Şimdi kitaptaki ToyJson3 de dahil olmak üzere 3 kütüphanenin hızını karşılaştırmaya karar verdim. Örnek bir json olarak Binance'in 768 Kb boyutundaki "exchangeInfo" yanıtını aldım. Kütüphane onu bir dizeden okuduğunda bütünüyle ayrıştırıldı, sonra bir karakter seçtim ve tüm verilerini okudum. Sonuç

JAson - 122 ms
ToyJson3 - 54 ms
json - 48 ms

Ayrıca, json sadece deserialisation değil aynı zamanda serialisation'a da sahip ve Binance futures API için gerekli. Başka kütüphanelerde var mı bilmiyorum, başkalarının kodlarını ayrıştırmak zor.

Ama OOP konusunda iyi değilim ve bu yapıyı hiç anlamıyorum:

    JSON::Object* json1 = new JSON::Object()
        .setProperty("number", 123456)
        .setProperty("string", "text")
        .setProperty("boolean", true)
        .setProperty("object", new JSON::Object()
            .setProperty("number", 123456)
            .setProperty("string", "text")
            .setProperty("boolean", true)
            .setProperty("array", new JSON::Array())
        )
        .setProperty("array", new JSON::Array()
            .add(true) // boolean
            .add(123456) // sayı
            .add("string") // string
            .add(new JSON::Object()
                .setProperty("number", 123456)
                .setProperty("string", "text")
            )
            .add(new JSON::Array()
                .add(true)
                .add(123456)
                .add("string")
            )
        );

    string exampleText = json1.toString();
 
Dürüst olmak gerekirse, ToyJson3'e de bakacağım - orada bazı bellek tasarrufu çalışmaları yapıldı, bu önemli.
 
Edgar Akhmadeev #:
Bu yapıyı hiç anlamıyorum.
Kütüphane koduna bakmadım, ancak sunduğunuz parçaya bakılırsa, setProperty ve Add yöntemleri nesneye (this) bir referans döndürür, böylece bir nokta aracılığıyla sınıf yöntemine tekrar başvurabilirsiniz. Bu, bu tür çağrı zincirlerini toplamanıza olanak tanır. Bu, bu tür çağrı zincirlerini toplamanıza olanak tanır.