Projemdeki yapıları otomatik olarak json'a dönüştürmek istiyor olayım. code.dlang.org'da json diye arattıktan sonra şu pakedi beğenmiş olayım:
http://code.dlang.org/packages/painlessjson
O sayfada dub.json'a ve dub.sdl'e neler yazmam gerektiği gösteriliyor ama ben komut satırını da kullanabilirim. Öğrenmiş olmak için de aşağıdaki komutu işletmeden önce ve işlettikten sonra dub.json dosyasına bakarak nasıl değiştiğini görebilirim:
'
dub_deneme $ dub add painlessjson
Adding dependency painlessjson ~>1.3.9
'
O pakedin belirli bir sürümünde ısrar etseydim, örneğin 'painlessjson=1.3.8' de yazabilirdim. Bu işi dub'a bıraktım, o code.dlang.org'a baktı ve son sürümün 1.3.9 olduğunu öğrendi.
Programımı tekrar oluşturuyorum:
'
dub_deneme $ dub build
Fetching painlessjson 1.3.9 (getting selected version)... <-- painlessjson'un indirilmesi
Fetching painlesstraits 0.3.0 (getting selected version)... <-- Onun gerektirdiği başka bir paket
Performing "debug" build using /usr/bin/dmd for x86_64.
dunit 1.0.14: building configuration "library"...
painlesstraits 0.3.0: building configuration "unittest"...
painlessjson 1.3.9: building configuration "library"...
dub_deneme ~master: building configuration "application"...
Linking...
'
İndirdiği paketleri Linux'ta ~/.dub klasörünün altına yerleştiriyor: '/home/ali/.dub/packages/painlessjson-1.3.9'
Şimdi dub_deneme/source/app.d dosyasını değiştiriyorum:
'
dub_deneme $ cat source/app.d
import std.stdio;
import b;
import painlessjson; // <-- Kullandığım paket
struct S { // <-- Bir yapı
int i;
string s;
}
void main()
{
writeln(hesapla(5));
auto s = S(42, "merhaba"); // <-- Bir yapı nesnesi
auto j = s.toJSON; // <-- painlessjson'un kullanılması
writeln(j);
}
'
Tekrar oluşturuyorum:
'
dub_deneme $ dub build
Performing "debug" build using /usr/bin/dmd for x86_64.
dunit 1.0.14: target for configuration "library" is up to date.
painlesstraits 0.3.0: target for configuration "unittest" is up to date.
painlessjson 1.3.9: target for configuration "library" is up to date.
dub_deneme ~master: building configuration "application"...
Linking...
To force a rebuild of up-to-date targets, run again with --force.
'
Programı işletiyorum:
'
dub_deneme $ ./dub_deneme
50
{"i":42,"s":"merhaba"} // <-- S yapı nesnesinin json hali
'
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]