JSONCPP bir yazara sahip, ancak tüm yapmak için ayrıştırıcıdan bilgi almak ve daha sonra bir dizeye veya bir akışa çıktı. Yeni nesneleri, dizileri, değerleri, dizeleri, dizgileri değiştirip değiştirebilir ve dosyaya nasıl yazabilirim?JSONCPP Dosyalara yazılıyor
cevap
AFAICT, tüm JSON veri türlerine hitap eden Json :: Value türünde nesneler oluşturursunuz ve sonucu bir Json :: Yazıcısına (türetilmiş türlerinden biri, spesifik olması için) geçirmeniz yeterlidir. bir akışa.
Örn .: Bir dosyaya üç tamsayı dizisi yazmaya:
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
std::cout << vec;
İlk olarak, istenilen JSON::Value
oluşturmak zorunda. Tüm kuruculara bakmalısınız (first). Gerekli hiyerarşileri oluşturmak için, bkz. append
ve operatör [] aşırı yükler; Nesneler için her iki dizi de indices ve string keys için aşırı yükleme var.
JSON değerini geri yazmanın bir yolu, StyledStreamWriter::write
ve ofstream
kullanıyor. Cegprakash'ın nasıl yazılacağı konusundaki yanıtına bakın.
Evet, Marcelo'nun cevabını okuduktan sonra bunu düşündüm. İşe yarıyor. – Yelnats
@Yelnats Peki neden uygun bir cevap olarak işaretlemiyorsunuz? –
'StyledStreamWriter 'kullanımdan kaldırıldı. Özelleştirmeye ihtiyacınız varsa, ['StreamWriterBuilder'] kullanın (http://open-source-parsers.github.io/jsoncpp-docs/doxygen/class_json_1_1_stream_writer_builder.html). Ya da sadece diğer cevapları burada takip edin. – cdunn2001
#include<json/writer.h>
Kodu:
Json::Value event;
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
event["competitors"]["home"]["name"] = "Liverpool";
event["competitors"]["away"]["code"] = 89223;
event["competitors"]["away"]["name"] = "Aston Villa";
event["competitors"]["away"]["code"]=vec;
std::cout << event << std::endl;
Çıktı:
{
"competitors" :
{
"away" :
{
"code" : [ 1, 2, 3 ],
"name" : "Aston Villa"
},
"home" :
{
"name" : "Liverpool"
}
}
}
Bu gerçekten hoş görünüyor. .append yöntemiyle int yerine sınıf eklemeye ne dersiniz? – malber
#include <json.h>
#include <iostream>
#include <fstream>
void main()
{
std::ofstream file_id;
op_file_id.open("file.txt");
Json::Value value_obj;
//populate 'value_obj' with the objects, arrays etc.
Json::StyledWriter styledWriter;
file_id << styledWriter.write(value_obj);
file_id.close();
}
Sadece kodunuzu değil, cevabınızı açıklarsanız daha kolay anlaşılır. – SuperBiasedMan
- 1. JsonCpp
- 2. JsonCPP hatası getMemberNames() nasıl düzeltilir?
- 3. Dosyaya yazılıyor (Prolog)
- 4. JSONCPP (Visual Studio2010) yapı hatası oluşturma
- 5. React.js: setState üzerine yazılıyor, birleştirilmiyor
- 6. Köprüler e-postaların üzerine yazılıyor
- 7. Yıldız işareti kalın harflerle yazılıyor
- 8. Dosyalara gezinirken yetkisiz hata
- 9. 7Zip dosyalara şifreleme ekleyin
- 10. Phonegap kullanarak dosyalara erişme
- 11. Dosyalara işaretçi dizisi oluştur
- 12. Dosyalara satır ekleyin
- 13. Yükseltme ve Visual Studio10 ile JSONCPP kullanma Boost
- 14. jQuery Doğrulama - Temel doğrulama yönteminin üzerine yazılıyor
- 15. NPOI - Dosyaya yazı yazılıyor .xlsx çalışma kitabı
- 16. Püskürtme işlemine stdin nodejs yazılıyor mu?
- 17. Global Array, Yeniden Atama Olmadan Üzerine Yazılıyor
- 18. Neden dil tercümanları hedef dilde yazılıyor?
- 19. Özel Galeri oluşturma - onFling öğesinin üzerine yazılıyor
- 20. Python, stdout ve fileinput kullanılarak dosyaya yazılıyor
- 21. IIS 7.5'de sunucu değişkeni yeniden yazılıyor
- 22. NEO4J: CustomHeaders varsayılan üstbilginin üzerine yazılıyor mu?
- 23. Magento Katalogu URL yeniden yazılırken yeniden yazılıyor
- 24. Serilog: Farklı dosyalara oturum aç
- 25. tomcat belirli dosyalara erişimi reddediyor
- 26. MSBuild - Dosyalara Kaçış Karakterlerini Yazma
- 27. Nesneleri Node.js'deki dosyalara nasıl kaydedebilirim?
- 28. Dosyalara ekleyen gulp, üzerine yazmamak
- 29. URL'leri yanlış şekilde dosyalara aktarma
- 30. Python ile dosyalara nasıl geçilir?
Ama .json dosyasına yazmak istiyorum. – Yelnats
Sonra "cout" yerine "ofstream" kullanın. –
Yelnats, daha sonra std :: cout yerine bir dosyaya aktarın. – TimZaman