2015-02-11 213 views
-2

我在C++項目中從API獲取不同的JSON。 我的目標是在我的後端代碼中將不同的JSON解析爲一個結構或類。C++將不同的JSON解析爲一個結構或類

例如,我有

{ 「的access_token」: 「xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」, 「expires_in」:3600, 「範圍」: 「令牌」,}

{ 「名稱」: 「例如」, 「updatedAt」:{ 「日期」: 「2015年1月30日14時03分28秒」, 「timezone_type」:3, 「時區」: 「歐洲/斯德哥爾摩」 }}

現在我有兩個結構對於以上的JSON,但我想爲所有JSON使用一個結構或類。

哪種算法更適合這種情況下提前

+0

這些是非常不同的,所以我會讓他們分開。唯一的通用結構可以是'struct'的['union'](http://en.cppreference.com/w/cpp/language/union)。 – 2015-02-11 07:32:34

+0

要清楚。問題不在於解析JSON,而在於重構代碼中解析數據的表示形式?此外,您已經能夠存儲您的數據,因爲它足夠可預測,您可以爲該表示編寫特定的結構(並且已經這樣做了)?現在你在問一個能夠表示任何可想象的JSON的泛型結構嗎? – moooeeeep 2015-02-11 07:45:39

+0

是的moooeeeep!我可以在我的代碼中解析json數據,但我想要一個結構或類而不是兩個或三個。我想要一個通用的結構或類以及將所有JSON數據解析爲一個結構或類的算法。 – developergg 2015-02-11 07:53:53

回答

2

由於沒有「內置」類爲本地C JSON格式++。 不僅如此,JSON是序列化的JavaScript對象,可以根據內部成員或函數,類型和幾乎所有內容進行動態更改。 這在「常規」C++中是不可能實現的,因爲一切都必須在編譯時設置。 大多數JSON解析器用於C++的使用的標準::地圖的一些組合以保持一個短截線的一切JSON可容納(整數,浮點,字符串,布爾,另一個JSONValue等)

我一些「JSONValue」對象認爲你應該使用這些解析器之一,而不是試圖找出解析你自己的JSON。如果我的程序不使用Unicode和SimleJSON,我個人使用JSONCPP。

+0

我知道。我問了這個問題才知道合適的算法! – developergg 2015-02-12 07:12:55