2017-07-25 65 views
1

我在C++中編寫並使用JsonCPP。我有一個有150多個變量的類,我想知道是否有可能一次將所有變量轉換爲Json。我想不是這樣做:將具有150多個變量的C++類轉換爲Json對象

myClass.h

class myClass 
{ 
    std::string var0; 
    std::string var1; 
    //... 
    std::string var150; 
} 

的main.cpp

int main() 
{ 
    Json::Value param; 

    param["var0"] = var0; 
    param["var1"] = var1; 
    //... 
    param["var150"] = var150; 
} 

謝謝你的提示。

+0

你確定沒有辦法重構它嗎?也許,你可以從繼承中受益,比如?如果你不介意我問什麼類的話?只是好奇。我從來沒有見過有這麼多變數的班級。 – FreeNickname

+0

我正在使用Nessus的漏洞掃描程序API。我需要創建和配置掃描策略,並且其中有很多變量。 –

+2

所有的成員變量是相同的類型嗎?如果是的話,你不能使用一個'std :: map''鍵的變量名嗎?然後,您可以迭代地圖以串行化爲JSON。 – nefas

回答

2

一種選擇是在Google Protocol Buffers中創建結構。您仍然需要列出所有成員一次(在.proto文件中而不是.cpp文件中),但是您可以使用protobuf庫to convert to or from JSON,並且還具有其他方便的功能(例如迭代成員,轉換爲二進制格式,與gRPC一起使用)。